I don't see any reason why this shouldn't work. I've modified our example and can set that property without causing an error while using queues.
I don't think that the c++ client would be causing it. However, if you can create a sample app that causes this to happen then I'd create an issue and attach the code. Regards Tim On Wed, 2007-11-14 at 11:01 -0800, JohnOldman wrote: > > Yes, the error message is coming out in the ActiveMQ console window. > > In the C++ module that sends a message into ActiveMQ we are using: > > void MQProducer::sendMessage(const std::string &gameMessage, const > std::string& tag) > { > std::auto_ptr<TextMessage> > message(session->createTextMessage(gameMessage)); > message->setStringProperty("JMSXGroupID", tag); > m_Logger.messageSent(gameMessage); > producer->send(message.get()); > } > > > > tabish121 wrote: > > > > You are going to need provide a little more information than this. What > > are you doing in the C++ code. Can you provide a sample app that > > demonstrates the problem? > > > > I assume that this is coming out in the ActiveMQ console window, not > > from the c++ client as a BrokerError? > > > > Regards > > Tim. > > > > On Wed, 2007-11-14 at 10:39 -0800, JohnOldman wrote: > >> Hi > >> > >> Running SUSE 10.2 using CMS 2.1.1 with ActiveMQ 4.1 and stomp. > >> > >> Set up is one producer and two consumers (for failover). > >> > >> We have set JMSXGroupID in the producer, to make failover work, so only > >> one > >> consumer consumes. > >> > >> And on receiving messages the producer dumps the following errors: > >> > >> <-----snip-----> > >> WARN QueueSubscription - Failed to set boolean header: > >> javax.jms.MessageNotWriteableException: Message properties are read-only > >> javax.jms.MessageNotWriteableException: Message properties are read-only > >> at > >> org.apache.activemq.command.ActiveMQMessage.checkReadOnlyProperties(ActiveMQMessage.java:568) > >> at > >> org.apache.activemq.command.ActiveMQMessage.setObjectProperty(ActiveMQMessage.java:382) > >> at > >> org.apache.activemq.command.ActiveMQMessage.setBooleanProperty(ActiveMQMessage.java:534) > >> at > >> org.apache.activemq.broker.region.QueueSubscription.assignGroupToMe(QueueSubscription.java:134) > >> at > >> org.apache.activemq.broker.region.QueueSubscription.canDispatch(QueueSubscription.java:101) > >> at > >> org.apache.activemq.broker.region.PrefetchSubscription.dispatch(PrefetchSubscription.java:383) > >> at > >> org.apache.activemq.broker.region.QueueSubscription.dispatch(QueueSubscription.java:172) > >> at > >> org.apache.activemq.broker.region.PrefetchSubscription.add(PrefetchSubscription.java:129) > >> at > >> org.apache.activemq.broker.region.policy.RoundRobinDispatchPolicy.dispatch(RoundRobinDispatchPolicy.java:58) > >> at > >> org.apache.activemq.broker.region.Queue.dispatch(Queue.java:520) > >> at > >> org.apache.activemq.broker.region.Queue.sendMessage(Queue.java:346) > >> at org.apache.activemq.broker.region.Queue.send(Queue.java:326) > >> at > >> org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:292) > >> at > >> org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:382) > >> at > >> org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:193) > >> atvoid MQProducer::sendMessage(const std::string &gameMessage, > >> const std::string& tag) > > { > > std::auto_ptr<TextMessage> > > message(session->createTextMessage(gameMessage)); > > message->setStringProperty("JMSXGroupID", tag); > > m_Logger.messageSent(gameMessage); > > producer->send(message.get()); > > } > > > >> org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:126) > >> at > >> org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:98) > >> at > >> org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:136) > >> at > >> org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:498) > >> at > >> org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:604) > >> at > >> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:294) > >> at > >> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:185) > >> at > >> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65) > >> at > >> org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122) > >> at > >> org.apache.activemq.transport.stomp.StompTransportFilter.sendToActiveMQ(StompTransportFilter.java:81) > >> at > >> org.apache.activemq.transport.stomp.ProtocolConverter.sendToActiveMQ(ProtocolConverter.java:119) > >> at > >> org.apache.activemq.transport.stomp.ProtocolConverter.onStompSend(ProtocolConverter.java:204) > >> at > >> org.apache.activemq.transport.stomp.ProtocolConverter.onStompCommad(ProtocolConverter.java:139) > >> at > >> org.apache.activemq.transport.stomp.StompTransportFilter.onCommand(StompTransportFilter.java:71) > >> at > >> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84) > >> at > >> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:137) > >> at java.lang.Thread.run(Thread.java:619) > >> <-----snip-----> > >> > >> > >> I understand that properties are read only - is the CMS violating this? > >> > > > > >