Доступ к служебной шине Azure с помощью Apache Camel? - PullRequest
0 голосов
/ 09 мая 2018

Как вы можете получить доступ к служебной шине Azure, используя Apache Camel, используя Camel в качестве автономного приложения Java?

1 Ответ

0 голосов
/ 09 мая 2018

Если вы пытаетесь получить доступ к Azure Service Bus с помощью Apache Camel , вы можете сделать это с помощью Camel AMQ библиотеки .

Вы можете использовать следующие зависимости 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();
    }
}
...