搭建消息队列

搭建工程所用技术

RabbitMq, Eureka, SpringCloud

搭建步骤

一. 搭建消息发送工程
第一步: 导入依赖

org.springframework.boot
spring-boot-starter-amqp

第二步: 配置rabbitmq (application.yml)
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
virtual-host: /
第三步: 创建交换机
@Configuration
public class RabbitmqConfig {
public static final String EX_ROUTING_ADDSUFFER=“ex_routing_addsuffer”;
@Bean
public Exchange EXCHANGE_TOPICS_INFORM(){
return ExchangeBuilder.directExchange(EX_ROUTING_ADDSUFFER).durable(true).build();
}
}
第四步: 发送消息
@Override
public Result sendGetSuffer(Integer id) {
String jsonString = JSON.toJSONString(id);
String routingKey = “get”;
try {
rabbitTemplate.convertAndSend(RabbitmqConfig.EX_ROUTING_ADDSUFFER,routingKey,jsonString);
return new Result(null,true);
}catch (Exception e){
e.printStackTrace();
return new Result(null,false);
}
}
二. 创建消息接收工程
第一步: 添加依赖 同上
第二步: 配置rabbitmq(application.yml) 同上
第三部: 创建消息队列
@Configuration
public class RabbitmqConfig {

//队列bean名称
public static final String QUEU_ADDSUFFER="queue_addsuffer";
public static final String QUEU_GETSUFFER="queue_getsuffer";
//交换机Bean名称
public static final String EX_ROUTING_ADDSUFFER="ex_routing_addsuffer";

//声明在rabbitMQ中的队列名
@Value("${rabbitmqmag.queue}")
public String queue_name;
@Value("${rabbitmqmag.queue01}")
public String queue_name01;

//声明队列的key值
@Value("${rabbitmqmag.routingKey}")
public String routingKey;

@Value("${rabbitmqmag.routingKeyGet}")
public String routingGet;

//将转换机放进spring容器
@Bean(EX_ROUTING_ADDSUFFER)
public Exchange EXCHANGE_TOPICES_INFORM(){
    return ExchangeBuilder.directExchange(EX_ROUTING_ADDSUFFER).durable(true).build();
}

//将队列放进spring容器
@Bean(QUEU_ADDSUFFER)
public Queue QUEUE_ADDSUFFER(){
    Queue queue = new Queue(queue_name);
    return queue;
}

@Bean(QUEU_GETSUFFER)
public Queue QUEUE_GETSUFFER(){
    Queue queue = new Queue(queue_name01);
    return queue;
}

//绑定交换机-消息队列-key
@Bean
public Binding BINGING_QUEUE_INFORM(@Qualifier(QUEU_ADDSUFFER) Queue queue,@Qualifier(EX_ROUTING_ADDSUFFER) Exchange exchange){
    return BindingBuilder.bind(queue).to(exchange).with(routingKey).noargs();
}

@Bean
public Binding BINGING_QUEUE01_INFORM(@Qualifier(QUEU_GETSUFFER) Queue queue, @Qualifier(EX_ROUTING_ADDSUFFER) Exchange exchange){
    return BindingBuilder.bind(queue).to(exchange).with(routingGet).noargs();
}

}
第四步: 接收消息
@Component
public class SufferRabbitMQ {

private static final Logger LOGGER= LoggerFactory.getLogger(SufferRabbitMQ.class);

@Autowired
RoleService roleService;

@RabbitListener(queues = {"queue_getsuffer"})
public void getSuffer(String id){
    Integer parse = (Integer) JSON.parse(id);
    Role roleById = roleService.getRoleById(parse);
    System.out.println(roleById);
}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值