在项目中使用到了RabbitMQ,简单的记录一下使用过程中的一些问题。
1、项目是一些医院之间Server进行文件的转发,医院转发关系在云端Server上维护,需求中有一个问题,医院的关系是可以变化的。所以RabbitMQ与Spring的整合就不能使用配置文件固定下来。这部分单独提取出来,在服务器启动的时候先请求云端Server,获取到转发关系,然后初始化MQ。
2、RabbitMQ的消息Exchange模式是direct模式,在文档中看到可以使用多重绑定,查了好久,最后在RabbitMQ的DEMO中找到了Direct模式使用多重绑定的例子。
每个医院使用自己的uuid创建订阅队列,然后将发送文件到本医院的其他医院uuid作为routekey,将队列、routekey绑定到Exchange中。医院发送消息时,将自己的uuid作为routekey发送到MQ,这样其他绑定此routekey的医院会收到消息。
ConnectionFactory factory = new ConnectionFactory(); factory.setHost("45.56.82.102"); factory.setUsername("guest"); factory.setPassword("guest"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.exchangeDeclare(EXCHANGE_NAME, "direct",true); String queueName = "Hello"; String[] argvs = new String[3]; argvs[0] = "info"; argvs[1] = "error"; argvs[2] = "warning"; channel.queueDeclare(queueName, true, false, false, null); for(String severity : argvs){ channel.queueBind(queueName, EXCHANGE_NAME, severity); } System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); QueueingConsumer consumer = new QueueingConsumer(channel); channel.basicConsume(queueName, true, consumer); while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); String routingKey = delivery.getEnvelope().getRoutingKey(); System.out.println(" [x] Received '" + routingKey + "':'" + message + "'"); }
相关推荐
在本项目实例中,我们探讨的是如何整合SpringBoot、Dubbo、Redis以及RabbitMQ来构建一个高效、可扩展的Java应用程序。以下是对这些技术及其整合的详细解释: 1. **SpringBoot**: SpringBoot是由Pivotal团队提供的...
**基于SpringBoot+Maven的RabbitMQ项目Demo详解** 在现代软件开发中,消息队列(Message Queue)已经成为分布式系统中的重要组件,用于解耦服务、提高系统可扩展性和可靠性。RabbitMQ作为一款开源的消息中间件,因...
在本文中,我们将深入探讨如何在C#环境中封装和使用RabbitMQ,这是一个基于AMQP(Advanced Message Queuing...通过学习这个项目,开发者能够更好地理解和应用RabbitMQ在实际项目中的功能,提高系统的可扩展性和解耦性。
通过这个RabbitMQ客户端工程,开发者不仅可以学习到如何使用Qt和QAMQP库与RabbitMQ进行通信,还能了解如何设计和组织一个完整的Qt项目,这对于构建其他基于Qt的消息传递应用具有很高的参考价值。此外,由于工程已经...
【RabbitMQ性能测试报告】 本测试报告详细记录了对...总的来说,这份报告为RabbitMQ在实际项目中的应用提供了有力的数据支持,帮助决策者根据业务需求选择合适的部署模式和配置策略,以实现最优的性能和可靠性。
9. **调试与日志**:为了方便调试,示例项目可能包含了一些日志记录代码,用于追踪消息发送和接收的状态,以及可能出现的问题。 10. **示例应用的结构**:"rabbitmqDemo"可能包括多个MFC类,分别负责与RabbitMQ交互...
本资源包含了RabbitMQ的源代码,多种应用场景的调用实例,以及安装文档,对于学习和理解RabbitMQ的工作原理以及如何在实际项目中应用非常有帮助。 首先,RabbitMQ的核心概念包括生产者、消费者、交换器、队列和绑定...
RabbitMQ 是一个流行的消息队列系统,用于应用程序之间的异步通信。 描述没有提供具体细节,但我们可以假设内容可能涵盖如何结合 Kettle 和 RabbitMQ 实现数据流的发布和订阅。这通常涉及以下几个关键知识点: 1. ...
在Windows环境下使用RabbitMQ,开发者可以利用其丰富的客户端库,如Python的pika库,Java的RabbitMQ Java Client等,方便地集成到自己的项目中。此外,RabbitMQ还提供了监控和报警功能,确保系统的稳定性和可靠性。 ...
RabbitMQ支持多种插件,如用于监控的`rabbitmq_management`,用于日志记录的`rabbitmq_management_log`,以及用于高可用性的`rabbitmq_clusterer`等。 7. **消息确认** RabbitMQ支持消息确认机制,允许服务器确认...
C# RabbitMQ Helper是专为简化C#中RabbitMQ的使用而设计的一个类库,它可以作为DLL被其他项目引用,极大地提高了开发效率和代码的可维护性。 **一、RabbitMQ基础** RabbitMQ是一个分布式的消息代理和队列服务器,...
1. RabbitMQ的日志文件:记录了RabbitMQ服务器的运行情况、错误信息以及消息处理细节,有助于调试和监控。 2. MQTT客户端连接和消息传输记录:展示了MQTT客户端如何连接服务器,以及发送和接收的具体消息内容。 3. ...
RabbitMQ是一种广泛使用的开源消息代理和队列服务器,它允许应用程序之间通过异步通信进行解耦。在本测试项目中,我们将探讨如何使用C#语言与RabbitMQ进行交互,包括客户端和服务端的连接和通信测试。 ### 1. 安装...
MySQL数据库的实时监控和数据变更同步...在SpringBoot项目中,我们可以方便地实现CanalListener,将数据库的更新事件转发到RabbitMQ,再由应用消费这些事件,更新ES或Redis等其他系统,构建高效、实时的数据同步架构。
RabbitMQ是一款开源的消息队列系统,基于AMQP(Advanced Message Queuing Protocol)协议实现...同时,由于RabbitMQ是一个社区驱动的项目,使用过程中遇到问题,可以通过官方文档、社区论坛和Stack Overflow寻求帮助。
通过以上步骤,我们可以将RabbitMQ无缝集成到Beego应用程序中,实现消息驱动的架构。这种架构允许系统在处理高并发请求时保持稳定,同时也提高了系统的扩展性和容错性。 在提供的压缩包文件`beego - rabbitmq`中,...
- **虚拟主机(Virtual Hosts)**:类似于Web服务器的虚拟主机,用于隔离不同的应用程序或项目。 - **交换机(Exchanges)**:接收生产者发送的消息,并根据预设的路由规则将消息分发到队列。 - **队列(Queues)**:...
您应该在要将错误消息记录到rabbitmq的所有项目上使用此扩展名。 ConsumerExtension用于从队列中获取消息,并可以选择使用原则2将其保存到数据库中。它还提供了网格以显示已保存的消息。 您应该将此扩展程序与内部...
此外,通过实践项目来加深对RabbitMQ的理解和应用,是快速提升技能的有效途径。 以上是关于RabbitMQ的基本介绍和关键知识点,希望对你学习和使用RabbitMQ有所帮助。通过深入研究和实践,你可以利用RabbitMQ构建高效...
在Java开发中,SpringMVC框架常用于构建Web应用程序,而RabbitMQ是一个流行的开源消息队列系统,基于Advanced Message Queuing Protocol (AMQP)。本文将深入探讨如何使用Java API和SpringMVC来集成RabbitMQ,实现...