ActiveMQ发送接收TextMessage、BytesMessage

1、TextMessage

发送部分

package org.quinn.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class SendMessage {

public static void main(String[] args) {
ConnectionFactory factory; //连接工厂
Connection connection;//jms连接
Session session;//发送、接收线程
Destination destination;//消息目的地
MessageProducer producer;//消息发送者

factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");

try {
connection = factory.createConnection();
connection.start();
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("FirstQueue");
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); //是否为持久化 ,NON_PERSISTENT非持久化 ,PERSISTENT持久化

for (int i = 11; i < 13; i++) {
String msg = "第" + i + "次发送消息";

TextMessage textMessage = session.createTextMessage(msg);
producer.send(textMessage);
}
session.commit();
} catch (JMSException e) {
e.printStackTrace();
}

}
}



接收部分

package org.quinn.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;

public class ReceivedMessage {

/**
* @param args
*/
public static void main(String[] args) {

ConnectionFactory factory;
Connection connection = null;
Session session;
Destination destination;
MessageConsumer consumer;
factory = new org.apache.activemq.ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
try {
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("FirstQueue");
consumer = session.createConsumer(destination);
while (true) {
TextMessage textMessage = (TextMessage) consumer.receive();
if (textMessage != null){
System.out.println(textMessage.getText());
}
Thread.sleep(1000);
}
} catch (JMSException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}

}



2、BytesMessage

发送部分

package org.quinn.activemq;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

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.MessageProducer;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class SendBytesMessage {

public static void main(String[] args) {
ConnectionFactory factory; //连接工厂
Connection connection;//jms连接
Session session;//发送、接收线程
Destination destination;//消息目的地
MessageProducer producer;//消息发送者

factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");

try {
connection = factory.createConnection();
connection.start();
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("FirstQueue");
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

BytesMessage bytesMessage = session.createBytesMessage();

File fil = new File("C:\\Users\\WS-SH-L1051\\Desktop\\a.txt");

InputStream is = new FileInputStream(fil);

byte by[] = new byte[is.available()];

is.read(by);

bytesMessage.writeBytes(by);

producer.send(destination, bytesMessage);

is.close();
session.commit();
} catch (JMSException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
}


接收部分

package org.quinn.activemq;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.command.ActiveMQBytesMessage;

public class ReceivedBytesMessage {

/**
* @param args
*/
public static void main(String[] args) {

ConnectionFactory factory;
Connection connection = null;
Session session;
Destination destination;
MessageConsumer consumer;
factory = new org.apache.activemq.ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
try {
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("FirstQueue");
consumer = session.createConsumer(destination);
while (true) {

Message msg = consumer.receive();
if(msg instanceof ActiveMQBytesMessage){
ActiveMQBytesMessage bytesMessage = (ActiveMQBytesMessage) msg;
if (bytesMessage != null){
byte []bt = new byte[(int) bytesMessage.getBodyLength()];
bytesMessage.readBytes(bt);
File fil =new File("C:\\Users\\WS-SH-L1051\\Desktop\\b.txt");
if(!fil.exists()){
fil.createNewFile();
}
OutputStream os = new FileOutputStream(fil);
os.write(bt);
os.close();
}
}
Thread.sleep(1000);
}
} catch (JMSException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}

}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值