ActiveMQ的下载安装与操作示例

一.在linux系统安装activeMQ

1.安装并启动

linux系统的安装包地址:
https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz
下载后通过Xshell软件上传到linux上
执行解压:tar zxvf apache-activemq-5.12.0-bin.tar.gz
解压后进入activeMQ目录
进入bin目录执行 ./activemq start
然后查看进程 ps -ef | grep activemq
activemq自动成功

2.访问active控制台

首先要查看防火墙状态systemctl status firewalld
如果防火墙是开启状态执行service firewalld stop 关闭防火墙
然后在windows浏览器输入192.168.25.131:8161/admin/

二.java客户端连接activeMQ(PTP模式)

1.消息生产者代码

public class JmsProduce {
    //activeq地址
    public static final String ACTIVE_URL="tcp://192.168.25.131:61616";
    public static final String QUEUE_NAME="queue01";

  public static void main(String[] args) throws JMSException {

      //创建连接工厂(采用默认账号密码登录)
      ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
      //通过连接工厂获得连接 并启动访问activemq
      Connection connection = connectionFactory.createConnection();
      connection.start();
      //创建会话session(第一个参数为是否开启事务,第二个参数为签收规则)
      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      //通过会话创建目的地
      Queue queue = session.createQueue(QUEUE_NAME);
      //通过会话创建生产者
      MessageProducer producer = session.createProducer(queue);
    for (int i = 0; i < 3; i++) {
        //创建消息
        TextMessage textMessage = session.createTextMessage("message---" + i);
        //通过消息生产者发送
        producer.send(textMessage);
    }
    //关闭资源
    producer.close();
    session.close();
    connection.close();
    System.out.println("消息发布到mq成功");

  }
}

2.消息消费者者代码(同步阻塞方式)

/** 消息消费者 */
public class JmsConsumer {

  // activeq地址
  public static final String ACTIVE_URL = "tcp://192.168.25.131:61616";
  public static final String QUEUE_NAME = "queue01";

  public static void main(String[] args) throws JMSException {
    // 创建连接工厂
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
    // 通过连接工厂创建连接,并启动访问
    Connection connection = connectionFactory.createConnection();
    connection.start();
    // 创建会话session
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    // 创建目的地
    Queue queue = session.createQueue(QUEUE_NAME);
    // 通过队列创建消费者
    MessageConsumer consumer = session.createConsumer(queue);
    while (true) {
      TextMessage receive = (TextMessage) consumer.receive();
      if (null != receive) {
        System.out.println("消费者接收到消息:" + receive.getText());
      } else {
        break;
      }
    }
    // 关闭资源
    consumer.close();
    session.close();
    connection.close();
  }
}

通过消息监听器消费消息(异步非阻塞)


/** 消息监听器消费 */
public class JmsConsumerListener {

  // activeq地址
  public static final String ACTIVE_URL = "tcp://192.168.25.131:61616";
  public static final String QUEUE_NAME = "queue01";

  public static void main(String[] args) throws JMSException, IOException {
    // 创建连接工厂
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
    // 通过连接工厂获得连接,并开启访问
    Connection connection = connectionFactory.createConnection();
    connection.start();
    // 创建会话session
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    // 通过session创建目的地
    Queue queue = session.createQueue(QUEUE_NAME);

    // 通过队列创建消费者
    MessageConsumer messageConsumer = session.createConsumer(queue);

    // 通过监听的方式来消费消息
    messageConsumer.setMessageListener(
        new MessageListener() {
          @Override
          public void onMessage(Message message) {
            TextMessage textMessage = (TextMessage) message;
            try {
              System.out.println("消息监听器监听得到消息:" + textMessage.getText());
            } catch (JMSException e) {
              e.printStackTrace();
            }
          }
        });
    System.in.read();

    messageConsumer.close();
    session.close();
    connection.close();
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值