代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
SpringBoot实现Rabbit消息队列
作者:
/ 发布于
2019/9/9
/
932
SpringBoot实现Rabbit消息队列
maven 引用 Rabbit <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 配置RabbitConfig,可放在Application 同级 package com.onem2; import org.springframework.amqp.core.AcknowledgeMode; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.TopicExchange; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.onem2.base.common.util.Config; import com.onem2.common.controller.RabbitComponent; /** * @ClassName: RabbitConfig * @Description: 注册消息队列 * @author heliang * @date 2017-12-13 上午10:21:33 * @version V2.1 * Update Logs: * Name: * Date: * Description: 初始化 */ @Configuration public class RabbitConfig { /** 消息交换机名称 */ public static final String EXCHANGE = "bank-log-exchange"; /** 路由键1 */ public static final String ROUTINGKEY_LOG = "bank-log-queue"; @Bean public ConnectionFactory connectionFactory() { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setAddresses("xxx.xx.xxx.xx"); connectionFactory.setPort(5672); connectionFactory.setUsername(Config.getProperty("rabbit.username")); connectionFactory.setPassword(Config.getProperty("rabbit.password")); connectionFactory.setVirtualHost(Config .getProperty("rabbit.virtualHost")); connectionFactory.setPublisherConfirms(true); return connectionFactory; } /** * 接受消息的监听,这个监听客户交易流水的消息 针对消费者配置 * * @return */ @Bean public SimpleMessageListenerContainer messageContainer1( ConnectionFactory connectionFactory, RabbitComponent rabbitComponent) { SimpleMessageListenerContainer container = new SimpleMessageListenerContainer( connectionFactory); container.setQueues(queue()); container.setExposeListenerChannel(true); container.setMaxConcurrentConsumers(10); container.setConcurrentConsumers(10); container.setAcknowledgeMode(AcknowledgeMode.MANUAL); // 设置确认模式手工确认 container.setMessageListener(rabbitComponent); return container; } @Bean public TopicExchange topicExchange() { return new TopicExchange(EXCHANGE); } /** 创建队列 */ @Bean public Queue queue() { return new Queue(ROUTINGKEY_LOG, true); } @Bean public Binding binding() { return BindingBuilder.bind(queue()).to(topicExchange()) .with(ROUTINGKEY_LOG); } } 3. 实现消息队列接收,如果不需要接收,只要发送,只需要取消掉messageContainer1这个方法就行了。 RabbitComponent 为接收处理方案 package com.onem2.common.controller; import java.util.Map; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.alibaba.fastjson.JSONObject; import com.onem2.capacity.bank.biz.BankReceiveLogBizService; import com.rabbitmq.client.Channel; @Component public class RabbitComponent implements ChannelAwareMessageListener { @Autowired private BankReceiveLogBizService bankReceiveLogBizService; public void onMessage(Message message, Channel channel) throws Exception { try { String boby = new String(message.getBody(), "utf-8");// 转换消息,我们是使用json数据格式 channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);// 已消费 } catch (Exception e) { e.printStackTrace(); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);// 未消费,放回队列 } } } 实现消息发送 @Autowired private AmqpTemplate rabbitTemplate; this.rabbitTemplate.convertAndSend(RabbitConfig.EXCHANGE, RabbitConfig.ROUTINGKEY_LOG, log);
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3