rabbitmq配置

package me.aizou.tour.guide.config;

import lombok.extern.slf4j.Slf4j;import me.aizou.tour.guide.domain.event.AnnounceEventMessage;import org.springframework.amqp.core.*;import org.springframework.amqp.rabbit.annotation.EnableRabbit;import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;import org.springframework.amqp.rabbit.connection.ConnectionFactory;import org.springframework.amqp.rabbit.core.RabbitTemplate;import org.springframework.amqp.support.converter.ClassMapper;import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;

import java.util.Arrays;import java.util.List;

/** * Created by Michael on 2017/5/19. */@EnableRabbit@Configuration@Slf4jpublic class AmqpConfig {

private final static String QUEUE = "tour-guide-api.announce";    private final static String EXCHANGE = "zouzou.public";

@Value("${spring.rabbitmq.host}")    private String host;

@Value("${spring.rabbitmq.username}")    private String username;

@Value("${spring.rabbitmq.password}")    private String password;

@Bean public Queue queue() {        return new Queue(QUEUE, true);    }

@Bean public TopicExchange exchange() {        return new TopicExchange(EXCHANGE);    }

// @Bean// public Binding binding(Queue queue, TopicExchange exchange) {// return BindingBuilder// .bind(queue)// .to(exchange)// .with("announce.guide");// }

 @Bean List<Binding> bindings() {

return Arrays.asList(                BindingBuilder.bind(queue()).to(exchange()).with("announce"),                BindingBuilder.bind(queue()).to(exchange()).with("announce.guide"));    }

@Bean public RabbitTemplate rabbitTemplate() {        //没有指定默认queueName,在接收的监听器指定 RabbitTemplate template = new RabbitTemplate(connectionFactory());        template.setMessageConverter(new Jackson2JsonMessageConverter());        return template;    }

@Bean("rabbitListenerContainerFactory")    public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();        factory.setConnectionFactory(connectionFactory());        factory.setMessageConverter(customConverter());        return factory;    }

@Bean public Jackson2JsonMessageConverter customConverter() {        Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter();        ClassMapper classMapper = new ClassMapper() {

@Override public Class<?> toClass(MessageProperties properties) {

if(properties.getConsumerQueue().equals("tour-guide-api.announce")) {                    return AnnounceEventMessage.class;                }                throw new RuntimeException(properties.getConsumerQueue()+"不支持");            }

@Override public void fromClass(Class<?> clazz, MessageProperties properties) {                throw new UnsupportedOperationException("this mapper is only for inbound, do not use for send message");            }        };        converter.setClassMapper(classMapper);        return converter;    }

@Bean public ConnectionFactory connectionFactory() {        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host);        connectionFactory.setUsername(username);        connectionFactory.setPassword(password);        return connectionFactory;    }}
时间: 2024-10-14 16:34:54

rabbitmq配置的相关文章

golang rabbitmq实践 (一 rabbitmq配置)

1:环境选择 系统为ubuntu 15.04 ,我装在虚拟机里面的 2:rabbitmq tabbitmq 3.5.4  download url : http://www.rabbitmq.com/ 3:安装 在Ubuntu环境下,建议直接下载deb安装包,可以再ubuntu软件包管理中直接安装,并且安装其他依赖包 4:启动 如果是deb包直接安装的话,默认是直接启动的,也可以通过 sudo  rabbitmq-server start 启动.如果提示 node with name "rabb

rabbitmq 配置多个消费者(转载)

Concurrency与Prefetch 在通常的使用中(Java项目),我们一般会结合spring-amqp框架来使用RabbitMQ,spring-amqp底层调用RabbitMQ的java client来和Broker交互,比如我们会用如下配置来建立RabbitMQ的连接池.声明Queue以及指明监听者的监听行为: <rabbit:connection-factory id="connectionFactory" /> <!-- template非必须,主要用于

springboot RabbitMQ 配置

引用自 http://www.cnblogs.com/ityouknow/p/6120544.html 自己留一份 记录一下 RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将RocketMQ捐献给了apache,当然了今天的主角还是讲RabbitMQ.消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来

rabbitmq 配置用户信息

本文摘自:http://my.oschina.net/hncscwc/blog/262246 1. 用户管理 用户管理包括增加用户,删除用户,查看用户列表,修改用户密码. 相应的命令 (1) 新增一个用户 rabbitmqctl  add_user  Username  Password (2) 删除一个用户 rabbitmqctl  delete_user  Username (3) 修改用户的密码 rabbitmqctl  change_password  Username  Newpass

hadoop生态搭建(3节点)-12.rabbitmq配置

# 安装 需要相关包# ==================================================================node1 node2 node3 yum install -y gcc gcc-c++ zlib zlin-devel perl ncurses-devel # 安装 openssl# ==================================================================node1 scp -r

RabbitMQ配置负载均衡的意义及RabbitMQ集群是否可以随意使用

说明构建RabbitMQ集群来确保可用性和性能只是保障弹性消息通信基础架构的一半,另一半则是编写当集群节点发生故障时知道如何重连到集群的应用程序.处理到集群的重连有多种策略,这篇wiki所关注的这种是使用负载均衡来处理节点的选择.使用负载均衡的意义通过使用负载均衡,不仅可以减少应用程序处理节点故障代码的复杂性,又能确保在集群中连接的平均分布.但是即便使用了负载均衡,编写处理节点故障的应用程序也要比建立到集群的连接复杂的多,应用程序需要准备好重新创建交换器和队列以应对初始节点故障.为Rabbit做

Java RabbitMQ配置和使用,基于SpringBoot

package rabbitmq.demo; import com.rabbitmq.client.AMQP; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.amqp.core.AmqpAdmin; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.DirectE

apache php RabbitMQ配置方式

确定自己的php版本号和位数,去pecl.php.net下载版本相应的rabbitmq扩展包, 以php5版本为例,在http://pecl.php.net/package/amqp里面选择php5对应的包http://pecl.php.net/package/amqp/1.4.0/windows 下载后,包里有两个文件php_amqp.dll,rabbitmq.1.dll, 第一个文件,放到php的扩展目录,第二个文件,放到php的根目录 然后在apache配置文件里面写上引用代码 LoadF

高可用RabbitMQ集群安装配置

RabbitMQ集群安装配置+HAproxy+Keepalived高可用 rabbitmq 集群 消息队列 RabbitMQ简介 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然.AMQP的主