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? 
> >> 
> > 
> > 
> 

Reply via email to