MessageProducer,是用来发送消息的,用来设定消息的优先级,签收的模式,以及消息的存活时间的设定。
MessageProducer 参数
//第一个参数 消息的目的地 Destination
//第二个参数 发送的消息 Message
//第三个参数 消息的模式 DeliveryMode
//第四个参数 消息的优先级 0-9 默认是4
//第五个参数 消息存活时间 存活时间单位是ms
MessageProducer.send(destination, msg, DeliveryMode.NON_PERSISTENT, 4, 1000*10);
设定优先级
一共有0-9,共10个级别,默认是4
0-4是普消息,
5-9是加急消息
虽然是有优先级,但是是个概率事件,不是绝对的优先,处理优先级的问题,可以在接收端,做一个排序处理,根据最后添加的事件或则其他等。
设定存活时间
默认情况下,消息不会失效的,设定消息存活一定时间,这个时间是ms级别的,
案例
package com.yellowcong.provice;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
* 创建用户:狂飙的yellowcong<br/>
* 创建日期:2017年12月9日<br/>
* 创建时间:上午11:01:51<br/>
* 机能概要:
*/
public class DemoSendMessage {
// activemq的服务器地址
private static final String ACTIVEMQ_HOST = "tcp://192.168.100.10:61616";
// 用户名
private static final String USERNAME = "yellowcong";
// 密码
private static final String PASSWORD = "yellowcong";
public static void main(String[] args) throws Exception {
provider();
customer();
}
/**
* 创建用户:狂飙的yellowcong<br/>
* 创建日期:2017年12月9日<br/>
* 创建时间:上午10:52:05<br/>
* 机能概要:消费者确认消息
*
* @throws Exception
*/
public static void customer() throws Exception {
// 获取连接
Connection conn = null;
try {
conn = getConnection();
// 获取session
Session session = conn.createSession(true, Session.CLIENT_ACKNOWLEDGE);
// 创建队列
Destination destination = session.createQueue("myqueue");
// 获取消费者
MessageConsumer cus = session.createConsumer(destination);
// 接收消息
TextMessage msg = (TextMessage) cus.receive();
// 确认接收, 又开启一个线程,去发送给服务器,按收到消息了
msg.acknowledge();
System.out.println("-------------接收并确认消息----------------");
System.out.println(msg.getText());
} finally {
// 关闭连接
conn.close();
}
}
/**
* 创建用户:狂飙的yellowcong<br/>
* 创建日期:2017年12月9日<br/>
* 创建时间:上午10:48:03<br/>
* 机能概要: 生产消息
*
* @throws Exception
*/
public static void provider() throws Exception {
// 获取连接
Connection conn = null;
try {
conn = getConnection();
// 获取session
Session session = conn.createSession(true, Session.CLIENT_ACKNOWLEDGE);
// 创建队列
Destination destination = session.createQueue("myqueue");
// 获取生产者
MessageProducer pro = session.createProducer(destination);
// 创建消息
TextMessage msg = session.createTextMessage();
msg.setText("请确认消息");
// 发送消息
//第一个参数 消息的目的地 Destination
//第二个参数 发送的消息
//第三个参数 消息的模式 DeliveryMode
//第四个参数 消息的优先级
//第五个参数 消息存活时间 存活时间单位是ms
pro.send(destination, msg, DeliveryMode.NON_PERSISTENT, 4, 1000*10);
//提交事物
session.commit();
System.out.println("-----------------发送消息----------------");
} finally {
// 关闭连接
conn.close();
}
}
/**
* 创建用户:狂飙的yellowcong<br/>
* 创建日期:2017年12月9日<br/>
* 创建时间:上午10:42:48<br/>
* 机能概要: 获取连接
*
* @return
* @throws Exception
*/
public static Connection getConnection() throws Exception {
// 1.获取工厂连接类
ConnectionFactory fc = new ActiveMQConnectionFactory(USERNAME, PASSWORD, ACTIVEMQ_HOST);
// 2.获取连接
Connection conn = fc.createConnection();
conn.start();
System.out.println("-----------------获取连接----------------");
return conn;
}
}