I am running into an issue wherein subscriptions to a particular topic on TIBCO is taking too long to get updates. Messages on Other topics published to the same cache are working fine. Any ideas why this would be and what can I do to debug this?
My guess is you work with TIBCO EMS (there's also another product called TIBCO Rendezvous).
That for a tool called TIBCO Gems is available. It allows you to monitor topics and queues.
That means you should be able to see when your subscriber takes something of the topic (also the acknowledgment action).
Hope that helps
Cheers
Sebastian
check your topic whether it is synchrous or asynchrous.Synchrous topics will take time. I hope you understand what does synchrous mean else ask me
Related
I wanted to use projectreator.io TopicProcessor Flux for publishing market data events to several subscribers. If one client is slow the buffer will get full and it will block the publisher completely. I read about onBackpressureBuffer but I don't think this is the solution.
The best would be that I get a callback and/or the subscriber gets disconnected - how can I achieve this?
Hope that somebody can help.
Thanks,
Robert
I am relatively new to JMS and I have been reading a lot on it lately.
I am planning to design a web app which would do the following:
User logs into the system and publishes a message/question to a topic.
All the users who have subscribed to the topic read the message/question and reply to it.
The originator reviews all the answers and picks the best answer.
The originator now replies to only the user whose answer he/she picked and asks for further clarification.
The responder gets the message and replies.
So, once the originator has picked the answer, the JMS now becomes a request/reply design.
My questions are:
Is it possible to publish to a topic with setJmsReplyTo(tempQueue)?
Can request/reply approach be async?
Is it a good idea to have per user queue?
These questions might some dumb to some of the experts here, but please bare in mind that I am still learning.
Thanks.
Is it possible to publish to a topic with setJmsReplyTo(tempQueue)?
You should be able but I'm not 100% sure about it. By the way, I searched in my bookmarks and found this link that should explain what you have to do to build up a Request/Response system using JMS
http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html
Can request/reply approach be async?
A message listener is an object that acts as an asynchronous event handler for messages. So you approach about request/reply, if using JMS, is by default async.
http://docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/prog_model.html#1023398
Is it a good idea to have per user queue?
I don't know how many user you expect to have but having one queue for each user is not a good way to handle the messages. I had a problem similar to yours but we used a single queue for each of the macro area and we structured the message to hold the information of the user that sent it in order to store the information later and use it to further analysis.
JMSReplyTo is just a message header, nothing else. So It is possible to publish a message withing a topic with specific value in this header.
Sure! If you would like to create a scalable system you should design event driven system using async instead of blocking aproach. MessageListener can help you.
It is specific to JMS broker implementation. If queue creation is quite cheap there is no problems with such a solution.
We have recently started using hornetq on a project and we use durable subscriptions to topics. However we have no control over the subscribers. What we would like to do is timeout the durable subscriptions if the client hasn't connected in the last 24 hours. There are a couple reasons for wanting to do this. The main reason is that the client id could change or the connecting client might just disappear.
Does anyone have any ideas?
Thanks in advance.
That seems a nice feature to have. You should open a feature request.
Meanwhile you could use management API to discover the queues you have, and the number of consumers on them. At this point you would have to control such thing outside of hornetq.
We would accept contributions if someone implemented the feature, and we could collaborate on the process.
I have a network of MS SQL servers connected to each other with (C++/C#)clients connected to them. and I'm about designing a way of messaging between clients and server-client messaging.
I've alread read about MS SQL Service Broker and other Brokers like Apache Qpid.
but still I cant find out how would this work, I would be thankful is someone could provide me with better sources or if someone has already worked with such an issue.
How could I make sending and recieving messages between clients without possible?
and please make sure this is no school homework or university course project.
I would really appreciate any helpful comment or advice...
+++Thanks+++
MSDN has quite a bit of technical information regarding SQL Service Broker. It is fairly high-level, but if you dig / read enough you will be a pro in no time.
http://msdn.microsoft.com/en-us/library/ms166043%28SQL.90%29.aspx
There are also a bunch of useful code samples floating around on the internet that should get you up and running so you can start experimenting.
http://blogs.msdn.com/b/sql_service_broker/
http://www.mssqltips.com/tip.asp?tip=1836
Best of Luck!
Why not poll? It's easy, the "dumbest thing that could possibly work".
I suggest you consider polling unless you have established what the problem with polling is.
Considerations:
Timeliness. How quickly must the message be recieved?
Frequency. How many messages are sent to each client per hour? Per day?
Plus, if your application has a connection heartbeat anyway, you could have it report whether there are any new messages and kill two birds with one stone.
If you are affraid of doing a
//PSUDO Code
while(!stopped){
try{
message = receiver.fetch(timeout);
}catch(TimeoutException){
//handle
}
}
You could always prefetch, set the prefetch:
receiver.setCapacity(100);
and then you could use the available messages functionality, but in all reality, this sounds like polling, in a backwards way ;)
Can anyone recommend a tool for quickly posting test messages onto a JMS queue? The tool should allow the user to enter some data, perhaps an XML payload, and then submit it to a queue? I know I could probably knock something up reasonably quickly to do this but I thought I'd ask first before reinventing the wheel. Cheers.
In ActiveMQ there is a very nice web admin console that allows you to send custom messages to any queue, you can even send several messages at once to stress test your application.
If you need something more generic, SoapUI has a JMS module. I never tried it, but the overall quality of this application suite is very promising.
Have a look at IBM WebSphere Developer Technical Journal: Running a standalone Java application on WebSphere MQ V6.0. Although the article is geared toward WebSphere MQ, the code download is plain-vanilla JMS with JNDI lookups and should run on any compliant JMS provider.
The nice thing about this is that it works for both queues and topics and will either be a message producer or a message consumer based on the run-time options. You can fire one up as a producer and another (or two or three or four) as a consumer to test out a queue or topic. The code is very simple non-gui which makes it an excellent starting point for experimentation. You could for example, easily modify it to set message expiry or bridge between topics and queues.
Two sourceforge Projects might be interesting:
Apache ActiveMQBrowser
QBrowser for GlassFish JMS / WebLogic MQ
They are from the same developer and quite active
You should have a look at HermesJMS. It is very feature rich, some concepts are a bit hard to understand...
I have written a client for Activemq and Hornetq that does just that. It's a commercial but there's a 60-day trial period. You can find it at:
Rockeye JMS
Regards,
Serge