idea下的activemq的简单demo

idea下的activemq的简单demo

  1. 建立一个简单的maven工程

  2. 配置pom.xml,导入activemq相关依赖

pom.xml

        <dependency>
            <groupId>org.apache.activemqgroupId>
            <artifactId>activemq-allartifactId>
            <version>5.14.5version>
        dependency>
  1. 创建生产者和消费者

生产者

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class Producer {

    public static void main(String [] args){
        ActiveMQConnectionFactory connectionFactory;
        Connection conn = null;
        Session session=null;

        try{
            //创建连接工厂
            connectionFactory=new ActiveMQConnectionFactory("admin","admin","tcp://192.168.187.128:61616");
            //创建连接对象
            conn=connectionFactory.createConnection();
            conn.start();
            //创建会话
            //第一个参数:是否支持事务,如果为true,则会忽略第二个参数,被jms服务器设置为SESSION_TRANSACTED
            //第一个参数为false时,第二个参数的值可为Seesion.AUTO_ACKNOWLEDGE,Session.CLIENT_ACKNOWLEDGE,Session.DUPS_OK_ACKNOWLEDGE
            //AUTO_ACKNOWLEDGE  为自动确认,客户端发送和接收消息不需要做额外的工作
            //CLIENT_ACKNOWLEDGE为客户端确认,客户端接收到消息后,必须调用javax.jms,Messagede1acknow方法
            //DUPS_OK_ACKNOWLEDGE允许副本的确认模式,一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认
            session=conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
            //创建连接目标
            Destination destination = session.createQueue("queue1");
            //创建生产者
            MessageProducer producer = session.createProducer(destination);
            //持久化配置
            //NON_PERSISTENT 当activemq关闭的时候,队列数据将会被清空
            //PERSISTENT 当activemq关闭的时候,队列数据将会保存
            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

            //发送消息
            String text = "Hello woprld1";
            TextMessage message = session.createTextMessage(text);
            producer.send(message);
            conn.close();
        }catch ( JMSException e){
            e.printStackTrace();
        }
    }


}

消费者

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;


public class Comsumer {
    public static void main(String [] args){

        ActiveMQConnectionFactory connectionFactory = null;
        Connection conn = null;
        Session session = null;
        MessageConsumer consumer = null;

        try{
            //创建连接工厂
            connectionFactory=new ActiveMQConnectionFactory(
                    "admin",
                    "admin",
                    "tcp://192.168.187.128:61616"
                    );
            //创建连接对象
            conn = connectionFactory.createConnection(
                    "admin",
                    "admin");
            conn.start();
            //创建会话
            session=conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
            //创建点对点接收的目标
            Destination destination =session.createQueue("queue1");

            //创建订阅的目标
            //Destination destination = session.createTopic("topic1");

            //创建消费对象
            consumer = session.createConsumer(destination);
            //接收消息
            Message message=consumer.receive(1000);
            if (message instanceof TextMessage){
                System.out.println("收到文本信息"+((TextMessage) message).getText());
            }else{
                System.out.println(message);
            }
            conn.close();
        }catch (JMSException e){
            e.printStackTrace();
        }


    }
}



activemq管理页面
idea下的activemq的简单demo_第1张图片

你可能感兴趣的:(中间件,java,activemq,activemq,中间件)