Hi,
I created a TCP topic to send and receive messages with a subscriber. I specifically avoided MSMQ as the messages are more than 4MB, and RabbitMQ cannot be used due to internal policies of the company.
Also I created Adapter Endpoint with WebSphere MQ Adapter. This setup works fine when my subscriber is active. That is when when there are messages in WebSphere they get delivered to the subscriber.
When the subscriber is offline, the Adapter Endpoint pull the messages from WebSphere and send to the topic. Since it is TCP, it try to send it and discard the message (as I think). When the subscriber comes online it never receive those message pulled out from WebSphere when it was offline, hence those messages are lost.
What is the best way to address this scenario?
Cheers,
Gihan.
Tags:
The only way to solve this is to use either MSMQ or Rabbit MQ based topics since they provide the store and forward.
if you can only use msmq, and the messages are greater than 4MB in size (hopefully not that much bigger.....), then you will have to store and retrieve them before they are published.
for example, create a Business Process in our designer and attach it to the OnPublish event of the publisher. In the process, you'll intercept the message...if its greater than 4MB, write it out to a folder and then reset the esbmessage so that it just contains the url location of the data that you just wrote out.
Next, create a Business Process in our designer and attach it to the OnReceive event of the subscriber. In that process, you'll look for whatever meta data you add to our message to determine if the message contains the data...or just the url to the data. if the url, then within the process, read the data in back into our message and let the process continue. the original message data will then be forwarded to the adapter endpoint.
Hi Admin,
Thanks for your reply.
Is there a way I can create a Business Process, so that when WebSphere MQ adapter pick the message, it first checks the is subscriber available. If not, keep the message (or put back) in WebSphere MQ instead of deleting it from there? That way WebSphere MQ can be used as a store instead of MSMQ. Is this possible in ESB?
Is there any property I can set on WebSphere MQ adapter, so it pick a copy of the messages from WebSphere MQ?
Cheers,
Gihan
Neuron ESB Product Support Forums and Communities
© 2024 Created by Neuron Admin. Powered by