Skip to main content

Hello,

I'm reaching out to see if anyone could share some examples of how to use the Assyst Message Bus Request when creating channels in ETM.

I'm trying to expand my toolset when working with ETM and want to understand the possibilities and limitations of writing to, and then reading from, the same message bus queue.

I've been referring to the Assyst wiki for guidance, but it lacks examples on how to fill out all the field types available during Assyst Message Bus Request datamapping. Specifically, I'm looking for guidance on:

  • How to fill out the various options present in the Assyst Message Bus Request.
  • When and how to use the different optional mapping fields.
  • Any particular cautions or best practices to consider when adding to the message bus, especially if ETM is then set to separately consume that data.

Any examples, tips, or resources you could share would be greatly appreciated!

Thank you in advance for your help.

The underlying technology is ActiveMQ (Classic), so the documentation for that may answer some of your questions. 

The fields which are required are either Queue or Topic (depending on how you want delivery to work), and Body. 

The main limitation is that only text/string messages can be consumed by ETM channels. So, you could have Channel A submit a Message with a CSV format data which was then consumed by Channel B (using the CSV message format). However you could not have Channel A submit messages using XLSX/PNG etc. data for consumption by another channel. 

One scenario where using the message bus would be useful would be to support asynchronous processing on a Remote Upload channel whilst using a Response Mapper. The Remote Upload channel could submit the received Payload to the message bus, then immediately send a custom response to the caller (via a response mapper). Another channel could process the queued message in the background. 

Do you have more specific questions or uses cases?


Thank you very much, Paul!

I had not come across that article, and the specifics of Queues implemening a sort of “loadbalancer” were new to me.

 

However, the main limitation I’m experiencing is the lack of a direct example to work from, such as a example datamapper to add a message to the message bus.

 

I’ve spent a lot of time trying to get the syntax correct when adding data to the Body, Message Property, Priority, and Time To Live, and this is where the main issue arises as I keep getting different errors and not figuring out the syntax.

If there was an example of a Message Bus Request Mapper on the wiki, it would be much easier to know what format ETM is expecting as input when data mapping, or even better, a set of example channels that display some “best practices” for both adding and reading data from the message bus.

The specific use case I’m trying to get to work is the one you proposed in this thread;

but I’ve not had the opertunity to set aside time to try getting that to work. However upon trying to do so a few weeks ago led me to realize i did not know enough about the use of destinations and the message bus.

How to use the message bus seemed out of topic to bring up in that thread, and that’s why this is a sepererate question😅


The simplest mapper would have a Body with expression “Hello, World!” and a Queue expression “MyQueue”. When this mapper processes an Import Record it will post a message to the specified queue, which will remain in the queue until something reads it, or the ActiveMQ process is restarted.

A Channel to consume these messages would specify:

  • Source: Assyst Destination
  • Message format:  Free Text
  • Queue: MyQueue

Such a channel would create a single record import for each invocation of the mappper.

From that simple example it should be possible to incrementally add complexity. 


Reply