Just to add to Tim's answer... If you are going to use the related config you might be better to upgrade to 0.10.0 as that config has been updated a bit, and while the old option still works for now it will be removed at a future date.
For the latest details, see http://qpid.apache.org/releases/qpid-jms-0.10.0/docs/index.html#jms-configuration-options, specifically in this case "jms.messageIDPolicy.messageIDType". The users mailing list would also be better for such questions in future. Robbie On 18 July 2016 at 14:13, Timothy Bish <[email protected]> wrote: > On 07/18/2016 06:10 AM, henry zhu wrote: >> >> Hello, >> >> Today, I tried to use the javax.jms.TextMessage.setJMSMessageID(uuid) to >> set >> a custom UUID by the qpid-jms 0.9 jar to publish the AMQP 1.0 message. >> Unfortuately, the QPID-JMS 0.9 didn't suppor the feature of setting custom >> message ID. For more detailed information, please refer to the below >> source >> code. > > > As per the JMS specification you cannot set a Message ID via the > setJMSMessageID, the ID is supplied by the JMS provider on send. We do > allow some control over the type of Message ID that is provided in v0.9.0 of > Qpid JMS which you can learn about by reading the configuration > documentation here: > http://qpid.apache.org/releases/qpid-jms-0.9.0/docs/index.html > > >> Is there anyone help me? Much appericated in advanced. >> /* >> * >> * Licensed to the Apache Software Foundation (ASF) under one >> * or more contributor license agreements. See the NOTICE file >> * distributed with this work for additional information >> * regarding copyright ownership. The ASF licenses this file >> * to you under the Apache License, Version 2.0 (the >> * "License"); you may not use this file except in compliance >> * with the License. You may obtain a copy of the License at >> * >> * http://www.apache.org/licenses/LICENSE-2.0 >> * >> * Unless required by applicable law or agreed to in writing, >> * software distributed under the License is distributed on an >> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >> * KIND, either express or implied. See the License for the >> * specific language governing permissions and limitations >> * under the License. >> * >> */ >> package org.apache.qpid.jms.example.success.activemq; >> >> import java.io.IOException; >> import java.io.InputStream; >> import java.util.Properties; >> import java.util.UUID; >> >> import javax.jms.Connection; >> import javax.jms.ConnectionFactory; >> import javax.jms.DeliveryMode; >> import javax.jms.Destination; >> import javax.jms.ExceptionListener; >> import javax.jms.JMSException; >> import javax.jms.Message; >> import javax.jms.MessageProducer; >> import javax.jms.Session; >> import javax.jms.TextMessage; >> import javax.naming.Context; >> import javax.naming.InitialContext; >> import javax.naming.NamingException; >> >> import org.apache.qpid.jms.JmsConnection; >> import org.apache.qpid.jms.JmsConnectionFactory; >> import org.apache.qpid.jms.JmsMessageProducer; >> import org.apache.qpid.jms.message.JmsMessageIDBuilder; >> >> //import org.apache.qpid.jms.example.success.Sender; >> >> public class Sender { >> private static final String USER = "user"; >> private static final String PASSWORD = "password"; >> private static final int DEFAULT_COUNT = 1; >> private static final int DELIVERY_MODE = >> DeliveryMode.NON_PERSISTENT; >> >> private Context getContext() { >> InitialContext context = null; >> try { >> InputStream resourceAsStream = >> this.getClass().getResourceAsStream("hello.properties"); >> Properties properties = new Properties(); >> properties.load(resourceAsStream); >> context = new InitialContext(properties); >> } catch (IOException e) { >> // TODO Auto-generated catch block >> e.printStackTrace(); >> } catch (NamingException e) { >> // TODO Auto-generated catch block >> e.printStackTrace(); >> } >> return context; >> >> } >> >> public void publish(int count) { >> try { >> // The configuration for the Qpid >> InitialContextFactory has been >> // supplied in >> // a jndi.properties file in the classpath, which >> results in it >> // being picked >> // up automatically by the InitialContext >> constructor. >> Context context = this.getContext(); >> >> JmsConnectionFactory factory = >> (JmsConnectionFactory) >> context.lookup("myFactoryLookup"); >> JmsMessageIDBuilder >> messageIDBuilder=JmsMessageIDBuilder.BUILTIN.DEFAULT.createBuilder(); >> factory.setMessageIDBuilder(messageIDBuilder); >> Destination queue = (Destination) >> context.lookup("myQueueLookup"); >> >> JmsConnection connection = >> (JmsConnection)factory.createConnection(USER, >> PASSWORD); >> >> >> connection.setExceptionListener(new >> MyExceptionListener()); >> connection.start(); >> >> Session session = connection.createSession(false, >> Session.AUTO_ACKNOWLEDGE); >> >> //MessageProducer messageProducer = >> session.createProducer(queue); >> JmsMessageProducer messageProducer = >> (JmsMessageProducer)session.createProducer(queue); >> long start = System.currentTimeMillis(); >> for (int i = 1; i <= count; i++) { >> TextMessage message = >> session.createTextMessage("Text!"); >> String uuid=UUID.randomUUID().toString(); >> System.out.println("UUID:"+uuid); >> messageProducer.setDisableMessageID(false); >> message.setJMSMessageID(uuid); >> messageProducer.send(message, >> DELIVERY_MODE, Message.DEFAULT_PRIORITY, >> Message.DEFAULT_TIME_TO_LIVE); >> >> if (i % 100 == 0) { >> System.out.println("Sent message " >> + i); >> } >> } >> >> long finish = System.currentTimeMillis(); >> long taken = finish - start; >> System.out.println("Sent " + count + " messages in >> " + taken + "ms"); >> >> connection.close(); >> } catch (Exception exp) { >> System.out.println("Caught exception, exiting."); >> exp.printStackTrace(System.out); >> System.exit(1); >> } >> } >> >> public static void main(String[] args) throws Exception { >> int count = DEFAULT_COUNT; >> if (args.length == 0) { >> System.out.println("Sending up to " + count + " >> messages."); >> System.out >> .println("Specify a message count >> as the program argument if you wish >> to send a different amount."); >> } else { >> count = Integer.parseInt(args[0]); >> System.out.println("Sending up to " + count + " >> messages."); >> } >> Sender sender=new Sender(); >> sender.publish(count); >> >> } >> >> private static class MyExceptionListener implements >> ExceptionListener { >> @Override >> public void onException(JMSException exception) { >> System.out.println("Connection ExceptionListener >> fired, exiting."); >> exception.printStackTrace(System.out); >> System.exit(1); >> } >> } >> } >> >> >> >> -- >> View this message in context: >> http://qpid.2158936.n2.nabble.com/The-QPID-JMS-0-9-didn-t-suppor-the-feature-of-setting-custom-message-ID-tp7647810.html >> Sent from the Apache Qpid developers mailing list archive at Nabble.com. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > > > -- > Tim Bish > twitter: @tabish121 > blog: http://timbish.blogspot.com/ > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
