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.
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]