欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅谈Spring Boot 整合ActiveMQ的过程

程序员文章站 2023-12-20 16:58:52
rabbitmq是比较常用的amqp实现,这篇文章是一个简单的spring boot整合rabbitmq的教程。 安装activemq服务器,(也可以不安装,如果不安装,...

rabbitmq是比较常用的amqp实现,这篇文章是一个简单的spring boot整合rabbitmq的教程。

安装activemq服务器,(也可以不安装,如果不安装,会使用内存mq)

构建spring boot项目,增加依赖项,只需要添加这一项即可

<!-- 添加acitivemq依赖 -->
<dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-activemq</artifactid>
</dependency>

增加application类

@springbootapplication
@enablescheduling //使用定时任务发送消息
public class mqtestapplication {
  public static void main(string[] args) {
    springapplication.run(mqtestapplication.class, args);
  }
}

配置application.yml

spring:
 activemq:
  broker-url: tcp://127.0.01:61616
  packages:
   trust-all: true

构建一个数据model,可以发送和消费的数据类型有: string, byte array, map<string,?>, serializable object.

// 如果发送的消息是一个对象,必须implements serializable接口
public class tmodel implements serializable {
  private static final long serialversionuid = -921008687184331557l;
  private int count;
  public tmodel(int count) {
    this.count = count;
  }

  @override
  public string tostring() {
    return "tmodel [count=" + count + "]";
  }

}

构建producer

@component
public class producer {
  // 在producer中注入jmstemplate,我们可以通过这个template发送消息
  private final jmstemplate jmstemplate;
  private int count = 0;

  @autowired
  public producer(jmstemplate jmstemplate) {
    this.jmstemplate = jmstemplate;
  }

  // 这里使用spring boot的定时任务发送消息
  @scheduled(fixedrate = 1000)
  public void create() {
    // 使用convertandsend发送消息
    jmstemplate.convertandsend("queue1", new tmodel(count++));
  }
}

构建consumer

@component
public class consumer {
  @jmslistener(destination = "queue1")
  public void comsume(tmodel content) {
    system.out.println("recive message from queue1 [" + content + "]");
  }
}

特别备注:如果我们的生产者和消费者在不同的module中时,最好将要消费的数据抽象成公共module.程序是通过serializable来序列化和反序列化对象的。必须保证生产者和消费者的对象模型的serialversionuid是一致的。

项目地址:

示例:配置rabbitmq ,增加一个队列

@configuration
public class aqueue {
@bean
public queue queue() {
return new queue("good");
}

}

定义一个生产者.

当启用activemq之后,会自动创建一个amqptemplate ,可以被注入到任何需要的地方,我们可以通过这个amqptemplate发送消息到mq中

/**
* 定义一个生产者
* @author lidong
*/
@restcontroller
@requestmapping("/test")
public class sendcontroller {
@autowired
private amqptemplate template;

@getmapping
public string testsend() {
// 使用amqptemplate发送消息
template.convertandsend("good", "good");
return "success";
}
}

定义消费者,通过指定rabbitlistener(queues='good')指定消费的队列

@component
public class consumer {
/**
* 定义一个消费者
* @param message
*/
@rabbitlistener(queues = "good")
public void handler(string message) {
system.out.println("recive message from " + message);
}
}

启动测试,在浏览器中输入 http://localhost:8080/test 即可发送一条消息到队列中。 该对列可以被消费者处理

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: