生产者
import javax.jms.BytesMessage;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.StreamMessage;
import javax.jms.TextMessage;
import javax.jms.ObjectMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSProducer {
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
private static final String BROKEURL = "failover://tcp://118.178.187.96:61616";
public static void run() throws Exception {
ConnectionFactory connectionFactory = null;
Connection connection = null;
Session session = null;
MessageProducer messageProducer = null;
Destination destination;
connectionFactory = new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL);
try {
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("HelloWorld");
messageProducer = session.createProducer(destination);
messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
sendTextMessage(session, messageProducer);
sendMapMessage(session, messageProducer);
sendStreamMessage(session, messageProducer);
sendBytesMessage(session, messageProducer);
sendObjectMessage(session, messageProducer);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(null != session) {
session.close();
}
if(null != messageProducer) {
messageProducer.close();
}
if(null != connection) {
connection.close();
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
public static void sendTextMessage(Session session,MessageProducer messageProducer) throws Exception{
TextMessage message = session.createTextMessage("这是一条文本消息123abc");
messageProducer.send(message);
}
public static void sendMapMessage(Session session,MessageProducer messageProducer) throws Exception{
MapMessage mapMessage = session.createMapMessage();
mapMessage.setLong("age",32L);
mapMessage.setDouble("sarray",5867.15D);
mapMessage.setString("username","键值对消息");
messageProducer.send(mapMessage);
}
public static void sendStreamMessage(Session session,MessageProducer messageProducer) throws Exception{
StreamMessage streamMessage = session.createStreamMessage();
streamMessage.writeString("这是streamMessage流消息");
streamMessage.writeLong(55);
messageProducer.send(streamMessage);
}
public static void sendBytesMessage(Session session,MessageProducer messageProducer) throws Exception{
String s = "这是BytesMessage字节消息";
BytesMessage bytesMessage = session.createBytesMessage();
bytesMessage.writeBytes(s.getBytes());
messageProducer.send(bytesMessage);
}
public static void sendObjectMessage(Session session,MessageProducer messageProducer) throws Exception {
User user = new User("1001","张三");
ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setObject(user);
messageProducer.send(objectMessage);
}
public static void main(String[] args) throws Exception {
JMSProducer.run();
}
}
消费者
import javax.jms.BytesMessage;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.ObjectMessage;
import javax.jms.Session;
import javax.jms.StreamMessage;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSConsumer {
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
private static final String BROKEURL = "failover://tcp://118.178.187.96:61616";
public static void run() throws Exception {
ConnectionFactory connectionFactory = null;
Connection connection = null;
Session session = null;
Destination destination;
MessageConsumer messageConsumer = null;
connectionFactory = new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);
try {
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("HelloWorld");
messageConsumer = session.createConsumer(destination);
while (true) {
Message message = messageConsumer.receive(100*1000);
if(null == message) {
break;
}
if(message instanceof TextMessage) {
System.out.println("收到TextMessage消息:" + ((TextMessage) message).getText());
} else if(message instanceof ObjectMessage) {
System.out.println("收到对象(User)消息:" + ((User) ((ObjectMessage) message).getObject()).getName());
} else if(message instanceof MapMessage) {
System.out.println("收到MapMessage消息:" + ((MapMessage) message).getLong("age"));
} else if(message instanceof StreamMessage) {
System.out.println("收到StreamMessage消息:" + ((StreamMessage) message).readString());
} else if(message instanceof BytesMessage) {
byte[] b = new byte[1024];
int len = -1;
while((len = ((BytesMessage)message).readBytes(b)) != -1) {
System.out.println("收到BytesMessage消息:" + new String(b , 0 , len));
}
}
}
session.commit();
} catch (JMSException e) {
e.printStackTrace();
} finally {
try {
if(null != session) {
session.close();
}
if(null != messageConsumer) {
messageConsumer.close();
}
if(null != connection) {
connection.close();
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws Exception {
JMSConsumer.run();
}
}