fanout 发送端
- import com.rabbitmq.client.Channel;
- import com.rabbitmq.client.Connection;
- import com.rabbitmq.client.ConnectionFactory;
- public class MyFanoutSender {
- private static final String MESSAGE = "my name is";
- public static void main(String[] args){
- Connection conn = null;
- Channel channel = null;
- try {
- //初始化连接,主机,端口,用户名,密码可以自己定义
- ConnectionFactory factory = new ConnectionFactory();
- factory.setHost(HOST_PARAMETER.LOCAL_HOST);
- factory.setPort(HOST_PARAMETER.LOCAL_PORT);
- factory.setUsername(HOST_PARAMETER.LOCAL_USER_NAME);
- factory.setPassword(HOST_PARAMETER.LOCAL_PASSWORD);
- //创建连接
- conn = factory.newConnection();
- //创建通道
- channel = conn.createChannel();
- //定义为fanout类型的交换机
- channel.exchangeDeclare(HOST_PARAMETER.EXCHANGE_NAME, "fanout");
- //发送,指定routingkey为""
- channel.basicPublish(HOST_PARAMETER.EXCHANGE_NAME, "", null, MESSAGE.getBytes());
- System.out.println("I send a fanout massage!");
- } catch (Exception e) {
- e.printStackTrace();
- } finally{
- try {
- if(channel != null){
- channel.close();
- }
- if(conn != null){
- conn.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
fanout订阅者(接收端),可以自己多定义几个,才能看出效果
- import java.io.IOException;
- import com.rabbitmq.client.AMQP.BasicProperties;
- import com.rabbitmq.client.Channel;
- import com.rabbitmq.client.Connection;
- import com.rabbitmq.client.ConnectionFactory;
- import com.rabbitmq.client.Consumer;
- import com.rabbitmq.client.DefaultConsumer;
- import com.rabbitmq.client.Envelope;
- public class MyFirstFanoutReceiver {
- public static void main(String[] args){
- Connection conn = null;
- Channel channel = null;
- try {
- //初始化连接
- ConnectionFactory factory = new ConnectionFactory();
- factory.setHost(HOST_PARAMETER.LOCAL_HOST);
- factory.setPort(HOST_PARAMETER.LOCAL_PORT);
- factory.setUsername(HOST_PARAMETER.LOCAL_USER_NAME);
- factory.setPassword(HOST_PARAMETER.LOCAL_PASSWORD);
- //创建连接
- conn = factory.newConnection();
- //创建通道
- channel = conn.createChannel();
- //声明交换机类型
- channel.exchangeDeclare(HOST_PARAMETER.EXCHANGE_NAME, "fanout");
- //声明默认的队列
- String queue = channel.queueDeclare().getQueue();
- //将队列与交换机绑定,最后一个参数为routingKey,与发送者指定的一样""
- channel.queueBind(queue, HOST_PARAMETER.EXCHANGE_NAME, "");
- //消费者
- Consumer consumer = new DefaultConsumer(channel){
- @Override
- public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
- throws IOException {
- System.out.println(new String(body,"utf-8")+" Tom");
- }
- };
- channel.basicConsume(queue, true, consumer);
- System.out.println("i am the first fanout receiver!");
- }catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
相关推荐
总结一下,RabbitMQ的发布/订阅模式在Java中的实现主要包括以下步骤: 1. 创建RabbitMQ连接和通道。 2. 生产者声明交换机,发布消息到交换机。 3. 消费者声明队列,将队列绑定到交换机,并消费消息。 注意,实际...
总结来说,RabbitMQ的fanout多播模式是一种简单且强大的工具,它使得消息的广播变得轻松,能够有效地支持分布式系统中的通信需求。了解并熟练掌握这一模式,对于提升系统的设计灵活性和稳定性至关重要。
在本文中,我们将详细介绍 Spring Boot 整合 RabbitMQ 的实例讲解,特别是 Fanout 模式下的实现。 Fanout Exchange Fanout Exchange 是一种特殊类型的交换器,它可以将消息广播到绑定到它的所有队列中,不管路由键...
本篇文章将深入探讨如何在Spring Boot 2.1.4版本中集成RabbitMQ,并实现三种主要的交换机类型:Fanout、Direct和Topic模式。 首先,我们需要在Spring Boot项目中添加RabbitMQ的相关依赖。在`pom.xml`文件中,引入`...
Fanout模式是广播模式,RabbitMQ会将消息无条件地复制到所有绑定到该交换器的队列,无需考虑路由键。每个消费者都会收到相同的消息副本,适合一发多收的场景。 现在,我们来看看如何在SpringBoot应用中实现这些...
在IT行业中,消息队列(Message Queue,MQ)是一种常用于...综上所述,RabbitMQ工具类的封装涵盖了连接管理、订阅者和服务的实现,以及在Android环境中的应用。理解这些知识点对于构建可靠、高效的分布式系统至关重要。
C#开发的RabbitMQ主题订阅模式,读取mysql 数据发送和解析一体。 使用vs2019开发的,可以运行使用,在根据自己的需求加工即可,已经实现了定时读取mysql数据库数据转为json发送,消费者接受后解析的应用。可以自行...
第11周-第06章节-Python3.5-RabbitMQ fanout广播模式.mp4
本文将围绕RabbitMQ的Java实践,通过分析"rabbitMQ-demo.zip"中的示例项目"rabbitMQ-demo-main",深入讲解RabbitMQ的核心概念、工作模式以及如何在Java环境中进行集成和应用。 一、RabbitMQ核心概念 1. **Broker**...
在这个项目中,我们关注的是RabbitMQ的C++客户端库的封装以及如何实现发布订阅模式。 首先,我们要了解RabbitMQ的基本概念。RabbitMQ是一个消息代理,它接收和转发消息,充当生产者和消费者之间的桥梁。生产者是...
在这个场景中,"java rabbitmq动态注册,监听实现"涉及到的主要知识点是利用Spring Boot框架与RabbitMQ集成,动态配置消费者,并实现实时监听消息。 1. **Spring Boot与RabbitMQ集成**: Spring Boot简化了...
扇出模式是最简单的广播模式,生产者发布消息到交换器,交换器将消息无条件地转发到所有绑定的队列,每个消费者都能接收到消息。适用于需要同步多个服务或者组件的场景。 在这些源码中,你将看到如何设置生产者和...
Fanout交换器是广播模式,它将所有发送到exchange的消息复制并分发到所有绑定到该exchange的queue。不考虑routing key,这种模式适用于需要将消息发送给所有订阅者的场景,例如发布/订阅模式。 **5. 实现示例** 在...
在Java中实现RabbitMQ的RPC,我们需要两个主要部分:一个RPC客户端,负责发送请求;另一个是RPC服务器,负责接收请求并返回响应。以下是实现这些功能的关键步骤: 1. **依赖管理**:首先,在项目中引入RabbitMQ的...
在这个“RabbitMQ Java测试客户端”项目中,我们可以看到它包含了Java客户端的实现,这对于理解和使用RabbitMQ与Java应用程序的集成至关重要。 首先,我们要理解Java在RabbitMQ中的作用。Java客户端库允许开发者在...
java 队列源码 #rabbitMQ repository 主要记录个人学习reabbit的相关demo rabbitmq-java-helloworld 只是第一个rabbitmq的例子 ...rabbitmq-spring-fanout spring boot使用的rabbitmq的发布订阅示例 rabb
在Java中,我们通常使用RabbitMQ的Java客户端库`com.rabbitmq:amqp-client`来与RabbitMQ服务器进行交互。首先,确保在项目中添加了此依赖项。在Maven工程的`pom.xml`文件中,可以这样添加: ```xml <groupId>...
在这个“rabbitmq简单java实例”中,我们将探讨如何在Java环境中集成并使用RabbitMQ。 首先,我们需要了解RabbitMQ的基本概念。在RabbitMQ中,生产者是发送消息的应用,消费者则是接收消息的应用。消息被发送到...
RabbitMQ客户连接池的Java实现。我们刚开始也是采用这种方式来实现的,但做压力测试时,发现这种每次新建Connection和新建Channel是非常耗时的,在大并发下,一般都要8毫秒左右,慢的话,好多都是几十毫秒。因此我们...
在Java开发中,RabbitMQ是一个非常流行的开源消息队列系统,它基于AMQP(Advanced Message Queuing Protocol)协议,用于高效地处理异步任务和解耦系统组件。`RabbitmqUtil` 是一个专门为Java开发者设计的工具类,...