Thanks for your help! Sebastian Rodriguez-2 wrote: > > Hi alan, > For the Selectors in C#, you can find the following snippet: > <--- start producer side code --> > /// <summary> > /// True if the publisher has a selector. False otherwise > /// </summary> > /// <value> > /// <c>true</c> if this instance is selector; otherwise, > <c>false</c>. > /// </value> > public bool IsSelector > { > get { return m_isSelector; } > set { m_isSelector = value; } > } > private bool m_isSelector = false; > > /// <summary> > /// Value of the Publisher's selector. > /// </summary> > /// <value>The selector.</value> > public string Selector > { > get { return m_selector; } > set { m_selector = value; } > } > private string m_selector = "default"; > > #region ITopicPublisher Implementation > /// <summary> > /// Fires the notification. > /// </summary> > /// The body. > public void FireNotification(object body) > { > if (!m_isDisposed) > { > try > { > IObjectMessage objMessage = null; > objMessage = m_producer.CreateObjectMessage(body); > m_producer.DeliveryMode = MsgDeliveryMode.Persistent; > objMessage.NMSPriority = m_messagePriority; > objMessage.NMSTimeToLive = m_timeToLive; > > if (IsSelector) > { > objMessage.Properties.SetString("eventName", > Selector); > } > > m_producer.Send(objMessage); > } > catch (Exception ex) > { > Logger.Exception(ex); > } > } > else > { > ObjectDisposedException ex = new ObjectDisposedException( > this.GetType().FullName); > > Logger.Exception(ex); > throw ex; > } > } > #endregion > <--- end producer side code --> > > <--- start consumer side code --> > /// <summary> > /// <see cref="ITopicConnection"/> > /// </summary> > public ITopicSubscriber CreateTopicSubscriber(string selector) > { > // default selector (condition always true) > string finalSelector = "2 > 1"; > > try > { > if (!String.IsNullOrEmpty(selector)) > { > finalSelector = string.Format("eventName = '{0}'", > selector); > } > > IMessageConsumer consumer = > m_session.CreateConsumer(m_topic, finalSelector, false); > return new ActiveMQSubscriber(consumer); > } > catch (Exception ex) > { > Logger.Exception(ex); > throw; > } > } > > <--- end consumer side code --> > > This is just a snippet that is not really intended to work but express the > main idea: > to use the selector you need to set it in the producer side (via the > Message.Properties.SetString), then when you create a consumer, you need > to > specify if it has a selector or not (via the CreateConsumer) > > I found the tutorials in these page quite useful while learning the basics > of ActiveMQ with C# (via the Apache.NMS.ActiveMQ): > http://remark.wordpress.com/articles/publish-subscribe-with-activemq-and-nms/ > The author of this blog have a bunch of ActiveMQ related blog entries that > are worth reading. > Hope this helps you, > Seb > > On 19 May 2010 16:22, Cristian Botiza <cristian.bot...@endava.com> wrote: > >> Session session = ...; >> MessageProducer producer = session.createProducer(destination); >> >> producer.setTimeToLive(timeToLiveInMilliseconds); //use the producer API >> to >> set TTL >> >> Message message = session.create...Message(...); >> >> producer.send(message); >> >> TTL has nothing to do with message selectors; I found it useful though. >> ________________________________________ >> From: alanchb [alanchbm...@gmail.com] >> Sent: 19 May 2010 04:32 >> To: users@activemq.apache.org >> Subject: RE: How to post message to a certain queue consumer? >> >> Yes,it works well. >> But I work with Visual C#,the method is a little different from yours. >> Can you give me some guide about TTL you mentioned in early reply? >> >> >> Cristian Botiza wrote: >> > >> > This is not AMQ specific; it's rather JMS API specific - the JavaDoc of >> > interface javax.jms.Message. >> > Did this approach work with P2P and multiple consumers? >> > >> > ________________________________________ >> > From: alanchb [alanchbm...@gmail.com] >> > Sent: 18 May 2010 18:08 >> > To: users@activemq.apache.org >> > Subject: RE: How to post message to a certain queue consumer? >> > >> > thanks a lot! that's exactly what i need. >> > but if i did not post the question here and get your kind reply,i will >> > never >> > think of using the method message.setStringProperty to set message >> > selector.how do you konw this?is there any shortcut to learn about >> > ActiveMQ? >> > >> > >> > Cristian Botiza wrote: >> >> >> >> In the producer code, when creating the Message object: >> >> >> >> message.setStringProperty("myFilterProperty", "my consumerID"); >> >> >> >> In the consumer (QueueReceiver or Message Driven Bean), define the >> >> message >> >> selector expression (SQL syntax) as myFilterPropert='my consumerID' >> >> >> >> ActiveMQ should dispatch only the messages matching the filter. Others >> >> will stay in the queue, I would also set the TTL in the producer >> >> (optional >> >> though). >> >> >> >> ________________________________________ >> >> From: alanchb [alanchbm...@gmail.com] >> >> Sent: 18 May 2010 12:24 >> >> To: users@activemq.apache.org >> >> Subject: RE: How to post message to a certain queue consumer? >> >> >> >> Thanks for your reply. >> >> >> >> but how to use message selector to identify a consumer when producer >> send >> >> a >> >> message? >> >> >> >> >> >> Cristian Botiza wrote: >> >>> >> >>> Message selectors? >> >>> >> >>> ________________________________________ >> >>> From: alanchb [alanchbm...@gmail.com] >> >>> Sent: 18 May 2010 11:12 >> >>> To: users@activemq.apache.org >> >>> Subject: How to post message to a certain queue consumer? >> >>> >> >>> under the P2P mode,if i have sevaral queue consumers,how to make the >> >>> producer >> >>> post message to the consumer he wants? >> >>> -- >> >>> View this message in context: >> >>> >> http://old.nabble.com/How-to-post-message-to-a-certain-queue-consumer--tp28592826p28592826.html >> >>> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >> >>> >> >>> The information in this email is confidential and may be legally >> >>> privileged. It is intended solely for the addressee. Any opinions >> >>> expressed are mine and do not necessarily represent the opinions of >> the >> >>> Company. Emails are susceptible to interference. If you are not the >> >>> intended recipient, any disclosure, copying, distribution or any >> action >> >>> taken or omitted to be taken in reliance on it, is strictly >> prohibited >> >>> and >> >>> may be unlawful. If you have received this message in error, do not >> open >> >>> any attachments but please notify the EndavaIT Service Desk on (+44 >> >>> (0)870 >> >>> 423 0187), and delete this message from your system. The sender >> accepts >> >>> no >> >>> responsibility for information, errors or omissions in this email, or >> >>> for >> >>> its use or misuse, or for any act committed or omitted in connection >> >>> with >> >>> this communication. If in doubt, please verify the authenticity of >> the >> >>> contents with the sender. Please rely on your own virus checkers as >> no >> >>> responsibility is taken by the sender for any damage rising out of >> any >> >>> bug >> >>> or virus infection. >> >>> >> >>> Endava Limited is a company registered in England under company >> number >> >>> 5722669 whose registered office is at 125 Old Broad Street, London, >> EC2N >> >>> 1AR, United Kingdom. Endava Limited is the Endava group holding >> company >> >>> and does not provide any services to clients. Each of Endava Limited >> and >> >>> its subsidiaries is a separate legal entity and has no liability for >> >>> another such entity's acts or omissions. Please refer to the “Legal” >> >>> section on our website for a list of legal entities. >> >>> >> >>> >> >> >> >> -- >> >> View this message in context: >> >> >> http://old.nabble.com/How-to-post-message-to-a-certain-queue-consumer--tp28592826p28593473.html >> >> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >> >> >> >> The information in this email is confidential and may be legally >> >> privileged. It is intended solely for the addressee. Any opinions >> >> expressed are mine and do not necessarily represent the opinions of >> the >> >> Company. Emails are susceptible to interference. If you are not the >> >> intended recipient, any disclosure, copying, distribution or any >> action >> >> taken or omitted to be taken in reliance on it, is strictly prohibited >> >> and >> >> may be unlawful. If you have received this message in error, do not >> open >> >> any attachments but please notify the EndavaIT Service Desk on (+44 >> >> (0)870 >> >> 423 0187), and delete this message from your system. The sender >> accepts >> >> no >> >> responsibility for information, errors or omissions in this email, or >> for >> >> its use or misuse, or for any act committed or omitted in connection >> with >> >> this communication. If in doubt, please verify the authenticity of the >> >> contents with the sender. Please rely on your own virus checkers as no >> >> responsibility is taken by the sender for any damage rising out of any >> >> bug >> >> or virus infection. >> >> >> >> Endava Limited is a company registered in England under company number >> >> 5722669 whose registered office is at 125 Old Broad Street, London, >> EC2N >> >> 1AR, United Kingdom. Endava Limited is the Endava group holding >> company >> >> and does not provide any services to clients. Each of Endava Limited >> and >> >> its subsidiaries is a separate legal entity and has no liability for >> >> another such entity's acts or omissions. Please refer to the “Legal” >> >> section on our website for a list of legal entities. >> >> >> >> >> > >> > -- >> > View this message in context: >> > >> http://old.nabble.com/How-to-post-message-to-a-certain-queue-consumer--tp28592826p28597231.html >> > Sent from the ActiveMQ - User mailing list archive at Nabble.com. >> > >> > The information in this email is confidential and may be legally >> > privileged. It is intended solely for the addressee. Any opinions >> > expressed are mine and do not necessarily represent the opinions of the >> > Company. Emails are susceptible to interference. If you are not the >> > intended recipient, any disclosure, copying, distribution or any action >> > taken or omitted to be taken in reliance on it, is strictly prohibited >> and >> > may be unlawful. If you have received this message in error, do not >> open >> > any attachments but please notify the EndavaIT Service Desk on (+44 >> (0)870 >> > 423 0187), and delete this message from your system. The sender accepts >> no >> > responsibility for information, errors or omissions in this email, or >> for >> > its use or misuse, or for any act committed or omitted in connection >> with >> > this communication. If in doubt, please verify the authenticity of the >> > contents with the sender. Please rely on your own virus checkers as no >> > responsibility is taken by the sender for any damage rising out of any >> bug >> > or virus infection. >> > >> > Endava Limited is a company registered in England under company number >> > 5722669 whose registered office is at 125 Old Broad Street, London, >> EC2N >> > 1AR, United Kingdom. Endava Limited is the Endava group holding company >> > and does not provide any services to clients. Each of Endava Limited >> and >> > its subsidiaries is a separate legal entity and has no liability for >> > another such entity's acts or omissions. Please refer to the “Legal” >> > section on our website for a list of legal entities. >> > >> > >> >> -- >> View this message in context: >> http://old.nabble.com/How-to-post-message-to-a-certain-queue-consumer--tp28592826p28603302.html >> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >> >> The information in this email is confidential and may be legally >> privileged. It is intended solely for the addressee. Any opinions >> expressed >> are mine and do not necessarily represent the opinions of the Company. >> Emails are susceptible to interference. If you are not the intended >> recipient, any disclosure, copying, distribution or any action taken or >> omitted to be taken in reliance on it, is strictly prohibited and may be >> unlawful. If you have received this message in error, do not open any >> attachments but please notify the EndavaIT Service Desk on (+44 (0)870 >> 423 >> 0187), and delete this message from your system. The sender accepts no >> responsibility for information, errors or omissions in this email, or for >> its use or misuse, or for any act committed or omitted in connection with >> this communication. If in doubt, please verify the authenticity of the >> contents with the sender. Please rely on your own virus checkers as no >> responsibility is taken by the sender for any damage rising out of any >> bug >> or virus infection. >> >> Endava Limited is a company registered in England under company number >> 5722669 whose registered office is at 125 Old Broad Street, London, EC2N >> 1AR, United Kingdom. Endava Limited is the Endava group holding company >> and >> does not provide any services to clients. Each of Endava Limited and its >> subsidiaries is a separate legal entity and has no liability for another >> such entity's acts or omissions. Please refer to the “Legal” section on >> our >> website for a list of legal entities. >> > > > > -- > Sebastien Rodriguez > >
-- View this message in context: http://old.nabble.com/How-to-post-message-to-a-certain-queue-consumer--tp28592826p28606080.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.