Connecting ActiveMQ Artemis to Solace Message Broker

dreamoka
dreamoka Member Posts: 54 ✭✭✭

Does Solace provide some kind of connector to read (subscribe) the (AMQP) messages from a ActiveMQ Artemis and publish them to Solace broker? And, subscribe message from solace message broker and publish to ActiveMQ Artemis?

Comments

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 956 admin
    edited May 2023 #2

    Hi @dreamoka,

    Solace is actually building a JMS connector now which is expected to be released in late June or July which is built for exactly this use case. More info to come soon!

    It will be a self-contained connector as defined in @amackenzie 's video here: https://solace.com/resources/videos/solace-feature-spotlight-solace-connectors-video

  • dreamoka
    dreamoka Member Posts: 54 ✭✭✭

    Thank you:) Do you have any temp solution for this problem ?

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 956 admin

    Hi @dreamoka,

    You could use something like Camel to do a JMS to JMS bridge. Here is an example app that I've seen someone set up to do it previously: https://github.com/richard-lawrence/Solace-Camel-JMS-Bridge

    It looks like this is also what Active MQ recommends for bridging to other brokers: https://activemq.apache.org/jms-to-jms-bridge

    Hope that helps!

  • dreamoka
    dreamoka Member Posts: 54 ✭✭✭

    Hi @marc

    Just curious, i have some questions

    1) Solace and Apache Artemis both support amqp 1.0, why we need Apache camel or connector to bridge the solace and Apache Artemis? Can it be done by using solace bridge like static bridge?

    2) In future, to bridge message between solace and Apache Artemis (both communicated via AMQP protocol), is the recommended way using JMS connector? What is difference between JMS and AMQP?

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 956 admin

    Hi @dreamoka,

    No worries, here are the answers to your questions from my perspective:

    1. Solace's static bridges use SMF (Solace Message Format -> Solace's protocol). Not AMQP. This allows Solace to more efficiently bridge messages across the network.
    2. JMS is an API and AMQP is a protocol. You can actually use JMS over AMQP but I digress...We are creating a JMS connector first as it's more widely implemented by other message brokers that we see users connecting to. Note that when using our JMS connector the protocol under the covers on the Solace side is actually SMF which allows us the same efficiencies I was referring to in the response to #1.

    @amackenzie please feel free to correct me if I misstated anything here :)

    Hope that helps!

  • amackenzie
    amackenzie Member, Employee Posts: 265 Solace Employee

    @marc kind of... the JMS connector is JMS on the "other" broker side (Artemis in this case) but uses our native JCSMP Java API for the Solace side of the bridge.

    @dreamoka on #1, Marc is correct. Our static (or dynamic) bridges use SMF as the protocol between brokers. AMQP 1.0 is supported via client connections, not directly to another broker. Thus the use case of having a connector in-between that understands both brokers, is required.

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 956 admin

    Thank you for clarifying @amackenzie !

  • dreamoka
    dreamoka Member Posts: 54 ✭✭✭

    1) can I add topic/queue address without restarting the Solace JMS Connector?

    2) Is it one Solace JMS Connector per remote broker?

    3) Does it supports HA?

    Thank you @marc and @amackenzie

  • amackenzie
    amackenzie Member, Employee Posts: 265 Solace Employee

    @dreamoka

    1. Not at this time. We are looking to make some of the configuration to be dynamic, but for now, you can configure up to 20 workflows in a connector instance but these need to be set in the config at startup.
    2. No, you can configure multiple Solace and/or JMS broker connections per connector instance via the config.
    3. Yes, connector instances can be configured to be "active-standby" and you define a Solace queue (can be on any broker) that acts as a "management" queue to determine who is leader. If you start 2 or more connector instances from the same configuration, they will all start and 1 will be active (the others are hot standbys).
  • dreamoka
    dreamoka Member Posts: 54 ✭✭✭

    Hi @amackenzie and @marc

    I used Apache Camel to do a "JMS to JMS bridge" via AMQP protocol. does it support JMS transaction? I am getting the following error:

    failed: Transactions not supported [condition = amqp:not-implemented]
    

    The Camel AMQP Component Configuration


  • dreamoka
    dreamoka Member Posts: 54 ✭✭✭

    Hi @marc

    Any update on the JMS connector ? Is it release?

  • amackenzie
    amackenzie Member, Employee Posts: 265 Solace Employee

    Hi @dreamoka ,

    The connector is now available. I will have it available on the download sites in a couple of days. If you are using the container image, it's already available in Docker Hub: https://hub.docker.com/r/solace/solace-pubsub-connector-jms

  • dreamoka
    dreamoka Member Posts: 54 ✭✭✭

    Hi @amackenzie

    Do you have example on how to use the connector?

  • amackenzie
    amackenzie Member, Employee Posts: 265 Solace Employee

    @dreamoka , when I get it up for download on the Connector Hub (today), there is a user guide and further instructions for using the container that you can read to configure and run the connector.

  • amackenzie
    amackenzie Member, Employee Posts: 265 Solace Employee

    Here are those documents in the meantime.

  • dreamoka
    dreamoka Member Posts: 54 ✭✭✭

    Hi @amackenzie

    Can I use the Solace JMS Connector without JNDI ? As i only have AMQP host, username and password information for the Apache Artemis Message Broker.

    1) Connect Apache Artemis using JMS via AMQP Protocol - amqps://192.168.XXX.XXX:5671

    2) Using amqp-10-jms-spring-boot-starter library - Can i use this library?

  • dreamoka
    dreamoka Member Posts: 54 ✭✭✭

    Is JNDI need to be created by the JMS Provider? Based on my understanding, Solace has Solace JMS Connector required a JNDI lookup. I need to do enterprise message bridge to connect to other EMS (RabbitMQ, Apache Artemis) via AMQP 1.0 protocol and they would not provide me JNDI. Any advice how to use the JMS Connector?