【问题标题】:Accessing Azure Service Bus with Apache Camel?使用 Apache Camel 访问 Azure 服务总线?
【发布时间】:2018-05-09 18:15:01
【问题描述】:

如何将 Camel 作为独立的 Java 应用程序使用 Apache Camel 访问 Azure 服务总线?

【问题讨论】:

    标签: java apache-camel azureservicebus


    【解决方案1】:

    如果您尝试使用Apache Camel 访问Azure Service Bus,您可以使用Camel AMQ libraries 进行访问。

    如果您使用 Maven,可以使用以下 Maven 依赖项:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-parent</artifactId>
                <version>2.17.6</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-jms</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-amqp</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.qpid/qpid-amqp-1-0-client-jms -->
        <dependency>
            <groupId>org.apache.qpid</groupId>
            <artifactId>qpid-amqp-1-0-client-jms</artifactId>
            <version>0.32</version>
        </dependency>
    </dependencies>
    

    注意:我在这里使用的是相对较旧的 Apache Camel 版本,但此设置也适用于较新的版本。

    如果您想创建一个端点来使用来自 Azure 服务总线的消息,您可以创建一个充当连接工厂的 AMQComponent 将其绑定到注册表,然后使用它来侦听消息。

    这是一个例子:

    import org.apache.camel.builder.RouteBuilder;
    import org.apache.camel.component.amqp.AMQPComponent;
    import org.apache.camel.main.Main;
    import org.apache.qpid.amqp_1_0.jms.impl.ConnectionFactoryImpl;
    
    public class AzureMQToFileAMQ {
    
        public static void main(String[] args) throws Exception {
    
            Main main = new Main();
            AMQPComponent connectionFactory = new AMQPComponent(
                    ConnectionFactoryImpl
                            .createFromURL("amqps://"
                                    + "dev.emea-uk-test.q:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxx.servicebus.windows.net"
                                    + ":" + "5671"));
            main.bind("amqp", connectionFactory);
            main.addRouteBuilder(new RouteBuilder() {
                @Override
                public void configure() throws Exception {
                    from("amqp:queue:dev.emea.uk.test.q?consumerType=Simple")
                            .process(exchange -> {
                                final String body = new String((byte[])exchange.getIn().getBody());
                                System.out.println(body);
                            });
                }
            });
            main.run();
        }
    }
    

    【讨论】:

      【解决方案2】:

      This project 是一个很好的选择。

      【讨论】:

        猜你喜欢
        • 2019-01-15
        • 2015-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-18
        • 2021-05-14
        • 1970-01-01
        • 2022-09-24
        相关资源
        最近更新 更多