其他分享
首页 > 其他分享> > 使用Apache Camel访问Azure Service Bus?

使用Apache Camel访问Azure Service Bus?

作者:互联网

如何使用Camel作为独立的Java应用程序使用Apache Camel访问Azure Service Bus?

解决方法:

如果您尝试使用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 Service Bus消息的端点,可以创建一个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();
    }
}

标签:azureservicebus,java,apache-camel
来源: https://codeday.me/bug/20190828/1747456.html