ActiveMq之消息发送(MessageProducer)-yellowcong

来源:互联网 发布:python class 自己 编辑:程序博客网 时间:2024/06/07 07:44

MessageProducer,是用来发送消息的,用来设定消息的优先级,签收的模式,以及消息的存活时间的设定。

MessageProducer 参数

//第一个参数  消息的目的地  Destination//第二个参数  发送的消息  Message//第三个参数  消息的模式 DeliveryMode//第四个参数  消息的优先级 0-9 默认是4 //第五个参数 消息存活时间 存活时间单位是ms MessageProducer.send(destination, msg, DeliveryMode.NON_PERSISTENT, 4, 1000*10);

设定优先级

一共有0-9,共10个级别,默认是40-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;    }}
原创粉丝点击