> thanks for your reply,the message that i want to send to clients is > different,that is to say > i want to tell one client a message.if i have only one topic ,every > client must jude the message weather is sent to himself. do you have > good idea?
If each client is getting it's own messages, then I suggest each client have it's own queue. If there is overlap in the messages, then another option is to have a single queue and have all the clients connect with selectors (http://activemq.apache.org/selectors.html). > I think you should use one topic, otherwise, your procedure have to send one > message for 500 times to each topic. Actually, using composite queues (http://activemq.apache.org/composite-destinations.html) you can send one message and have it automatically forwarded to all 500 destinations. For example, let's say that we have a queue named "prices". You can have these forwarded to composite queues of the form "CompositeQueue.*.prices". Each client can then connect to the queue: CompositeQueue.CLIENT_UNIQUE_ID.prices . All messages to "prices" will be forwarded to these composite queues. This has the added benefit that you can also send a message directly to a client using the composite queue name, if the need arises. Moreover, this allows the client to act as a durable topic subscriber, since the messages will be forwarded to existing composite queues regardless of whether or not the client is connected when the message is sent. Finally, note that you can also use selectors on the composite queues themselves. Given that you have queues, topics, virtual destinations, and selectors at your disposal, there are many different ways to solve the same problem. It's best to read up on all of these features and play around with them, so that you can get a better understanding of their pros and cons. JLuna