Neither the queue name or the type capability (which given you found the problem, you may not need) should have ' ' in the actual value, per the various [address string] examples that lack that.
The selector will have ' ' around values that happen to be a string literal, since that is the syntax for string literals within selectors, essentially like the JMS selector syntax. It is the server that does the selection. The server will provide a copy of every message sent to the topic to each subscription on the topic (i.e each subscriber if they aren't shared subs), that is how pub/sub topics work. The client does nothing special. On Fri, 1 Apr 2022 at 13:31, rahul.sin...@morganstanley.com <rahul.sin...@morganstanley.com> wrote: > > Hello, > I managed to get this message selection working. Basically, the queue address > need not be enclosed in ' '. So, hopefully the filtering for queue is working > now. I will get a chance to test this on Monday with the other instance. > > However, we might still need to solve the problem for topics where messages > are broadcast and we would like all subscribers to receive them. In case of > broadcasts, we do not receive any uniqueAppID. They are available in specific > topic address. Different instances would need these broadcasts. So, we would > want qpid to put them in all receivers which subscribed to that topic. Please > can you help how this can be achieved or in case of topic, does the qpid by > default copies the message in all the subscribed receivers. > > Best Regards, > Rahul > > -----Original Message----- > From: rahul.sin...@morganstanley.com <rahul.sin...@morganstanley.com> > Sent: 01 April 2022 11:03 > To: users@qpid.apache.org > Subject: <Unverified Sender>RE: QPID C++ Queue handling > > > I tired various combination to pass the information to selector however I > keep on getting same error. Please see below code and Protocol traces in case > there is something you can quickly spot. > > Code - > Map selector; > std::string uniqueAppIdSelector = "\"uniqueAppID\"='" + _appId + "'"; > selector["selector"] = uniqueAppIdSelector; Map options; options["link"] = > selector; Address address(resp_queue, "", options, "'queue'"); //Address > address(resp_queue, "", options, "'queue'"); //Address address(resp_queue, > "", options); _receiver = _session.createReceiver(address); > > In the PROTOCCOL TRACE, I see - filter={:selector=@77567109365764 > ""uniqueAppID"= 'XXXXX_UNIQUE_APP_ID'"}, capabilities=:"'queue'"]. I tried > other combinations like > > Where I pass queue as "queue" without ' '. //Address address(resp_queue, "", > options, "queue"); PROTOCOL TRACE - > filter={:selector=@77567109365764 ""uniqueAppID"= 'XXXXX_UNIQUE_APP_ID'"}, > capabilities=:queue] > > OR without passing type argument to address. //Address address(resp_queue, > "", options); > filter={:selector=@77567109365764 ""uniqueAppID"='XXXXX_UNIQUE_APP_ID'"}] > > [Protocol] trace [XXXXX_UNIQUE_APP_ID]: FRAME: 0 -> @attach(18) > [name="'XXXXX.ResQueue_L'_c2928ec1-0937-4f84-a61f-90712c837f1a", handle=1, > role=true, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) > [address="'XXXXX.ResQueue_L'", durable=0, timeout=0, dynamic=false, > filter={:selector=@77567109365764 ""uniqueAppID"= 'XXXXX_UNIQUE_APP_ID'"}, > capabilities=:"'queue'"], target=@target(41) [address="'XXXXX.ResQueue_L'", > durable=0, timeout=0, dynamic=false], initial-delivery-count=0, > max-message-size=0] > > 2022-04-01 10:18:16 [Protocol] trace [XXXXX_UNIQUE_APP_ID]: FRAME: 0 <- > @detach(22) [handle=1, closed=true, error=@error(29) > [condition=:"amqp:unauthorized-access", description="AMQ119015: not > authorized to create consumer, AMQ229032: User: XXXXX_USER does not have > permission='CREATE_ADDRESS' on address 'XXXXX.ResQueue_L'"]] > > Best Regards, > Rahul > > -----Original Message----- > From: Robbie Gemmell <robbie.gemm...@gmail.com> > Sent: 31 March 2022 16:33 > To: users <users@qpid.apache.org> > Subject: Re: QPID C++ Queue handling > > Its hard to say much without knowing exactly what you did, the linked thread > has a few different things in it. > > The error suggests you are using Artemis and it is trying (and failing due to > permissions) to create an Address, which I wouldnt really expect if you are > consuming from an already known response queue, one that I would assume > already existed. > > You might need to ensure the broker actually treats the things as being an > 'anycast' queue and treats the consumer as a regular queue consumer, as I > know Artemis typically defaults to treating things as 'multicast' for more > topic-like behaviour, which might be a problematic if you have different > consumers with different selectors. > You can do that either by ensuring the address+queue definition is anycat, or > changing the broker side address settings [1][2] so anything auto-created is > considered 'anycast', or you could alternatively add a 'queue' type hint into > the consumer by setting the type option into the consumer address string when > creating the receiver (from other threads I think "my-queue; { node:{ type: > queue }}" is the format of that). > > [1] > https://activemq.apache.org/components/artemis/documentation/latest/address-model.html > [2] > https://activemq.apache.org/components/artemis/documentation/latest/address-settings.html > > > > On Thu, 31 Mar 2022 at 13:47, rahul.sin...@morganstanley.com > <rahul.sin...@morganstanley.com> wrote: > > > > Many thanks Gordon. I tried using the selector while creating the > > Receiver for response queue (as per the example given > > https://lists.apache.org/thread/95ozl3hxf0cqzt0nxgbvwroddx39kq1w) > > However, I get below exception - > > std::exception Link detached by peer with amqp:unauthorized-access: > > AMQ119015: not authorized to create consumer, AMQ229032: User: FOOBAR does > > not have permission='CREATE_ADDRESS' on address 'XXXXX.ResQueue_L' > > > > Best Regards, > > Rahul > > > > -----Original Message----- > > From: Gordon Sim <g...@redhat.com> > > Sent: 31 March 2022 12:06 > > To: users@qpid.apache.org > > Subject: Re: QPID C++ Queue handling > > > > On Thu, Mar 31, 2022 at 11:30 AM rahul.sin...@morganstanley.com > > <rahul.sin...@morganstanley.com> wrote: > > > 2) For the longer term/better solution, I will start looking into > > > selector. Is this within qpid C++ or proton layer. Any quick pointer will > > > be highly appreciated. > > > > For proton C++: > > https://github.com/apache/qpid-proton/blob/main/cpp/examples/selected_ > > recv.cpp > > > > For example with the old qpid::messaging API see e.g. > > https://lists.apache.org/thread/95ozl3hxf0cqzt0nxgbvwroddx39kq1w > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org For > > additional commands, e-mail: users-h...@qpid.apache.org > > > > > > ---------------------------------------------------------------------- > > ---------- > > NOTICE: Morgan Stanley is not acting as a municipal advisor and the > > opinions or views contained herein are not intended to be, and do not > > constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall > > Street Reform and Consumer Protection Act. If you have received this > > communication in error, please destroy all electronic and paper copies and > > notify the sender immediately. Mistransmission is not intended to waive > > confidentiality or privilege. Morgan Stanley reserves the right, to the > > extent permitted under applicable law, to monitor electronic > > communications. This message is subject to terms available at the following > > link: http://www.morganstanley.com/disclaimers If you cannot access these > > links, please notify us by reply message and we will send the contents to > > you. By communicating with Morgan Stanley you consent to the foregoing and > > to the voice recording of conversations with personnel of Morgan Stanley. > > > > You may have certain rights regarding the information that Morgan Stanley > > collects about you. Please see our Privacy Pledge > > https://www.morganstanley.com/privacy-pledge for more information about > > your rights. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org For additional > commands, e-mail: users-h...@qpid.apache.org > > > -------------------------------------------------------------------------------- > NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions > or views contained herein are not intended to be, and do not constitute, > advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform > and Consumer Protection Act. If you have received this communication in > error, please destroy all electronic and paper copies and notify the sender > immediately. Mistransmission is not intended to waive confidentiality or > privilege. Morgan Stanley reserves the right, to the extent permitted under > applicable law, to monitor electronic communications. This message is subject > to terms available at the following link: > http://www.morganstanley.com/disclaimers If you cannot access these links, > please notify us by reply message and we will send the contents to you. By > communicating with Morgan Stanley you consent to the foregoing and to the > voice recording of conversations with personnel of Morgan Stanley. > > You may have certain rights regarding the information that Morgan Stanley > collects about you. Please see our Privacy Pledge > https://www.morganstanley.com/privacy-pledge for more information about your > rights. > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org For additional > commands, e-mail: users-h...@qpid.apache.org > > > -------------------------------------------------------------------------------- > NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions > or views contained herein are not intended to be, and do not constitute, > advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform > and Consumer Protection Act. If you have received this communication in > error, please destroy all electronic and paper copies and notify the sender > immediately. Mistransmission is not intended to waive confidentiality or > privilege. Morgan Stanley reserves the right, to the extent permitted under > applicable law, to monitor electronic communications. This message is subject > to terms available at the following link: > http://www.morganstanley.com/disclaimers If you cannot access these links, > please notify us by reply message and we will send the contents to you. By > communicating with Morgan Stanley you consent to the foregoing and to the > voice recording of conversations with personnel of Morgan Stanley. > > You may have certain rights regarding the information that Morgan Stanley > collects about you. Please see our Privacy Pledge > https://www.morganstanley.com/privacy-pledge for more information about your > rights. > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org > For additional commands, e-mail: users-h...@qpid.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org For additional commands, e-mail: users-h...@qpid.apache.org