我将RabbitMQ包用于Symfony2 web框架。我的问题是,在TERMINAL中运行多个workers后,如何避免创建多个连接(以防止使代理过载)?在下面的示例中,我运行了两个workers,结果有两个connections/channel。
config.yml
old_sound_rabbit_mq:
connections:
default:
host: 127.0.0.1
port: 5672
user: guest
password: guest
vhost: /
lazy: true
producers:
order_create_bmw:
connection: default
exchange_options: { name: order_create_ex, type: direct }
queue_options:
name: order_create_bmw_qu
routing_keys:
- bmw
consumers:
order_create_bmw:
connection: default
exchange_options: { name: order_create_ex, type: direct }
queue_options:
name: order_create_bmw_qu
routing_keys:
- bmw
callback: application_frontend.consumer.order_create_bmw
services.yml
services:
application_frontend.producer.order_create_bmw:
class: Application\FrontendBundle\Producer\OrderCreateBmwProducer
arguments:
- @old_sound_rabbit_mq.order_create_bmw_producer
namespace Application\FrontendBundle\Producer;
use Application\FrontendBundle\Entity\Order;
use OldSound\RabbitMqBundle\RabbitMq\ProducerInterface;
class OrderCreateBmwProducer
{
private $producer;
public function __construct(ProducerInterface $producer)
{
$this->producer = $producer;
}
public function add(Order $order)
{
$message = [
'order_id' => $order->getId(),
'car_model' => $order->getCarModel(),
'timestamp' => date('Y-m-d H:i:s')
];
$this->producer->publish(json_encode($message), 'bmw');
}
}
$ app/console rabbitmq:consumer order_create_bmw
$ app/console rabbitmq:consumer order_create_bmw
每个连接到rabbitmq的客户机(无论发布者还是订阅者)都将创建一个连接。除了使用更少的客户端,我想不出任何其他方法来实现这一点。我也想不出这样做的理由:)如果是性能,那么实际上拥有更多的订阅者将有助于“清空”交换(和队列)。
我正在用Spring编写一个服务,并使用Spring AMQP连接到Rabbitmq。 我有两个rabbitmq集群,一个仅用于发布消息(消息通过联合插件发送到另一个集群),另一个集群用于声明最终用户将从中使用的队列。 节点位于aws lb后面,每个集群有一个lb。 我在代码中使用CachingConnectionFactory和RabbitTemboard、RabbitAdmin,我希望与所有节
我在 RabbitMQ 中创建新队列时遇到了一些问题。我只创建一个使用者客户端,该客户端将使用来自另一个微服务的消息。 这是我到目前为止所做的。 应用程序属性: 配置类: 和侦听器类: 当我运行这个程序时,我有一条ACCESS_REFUSED消息,但我不知道为什么。我错过了什么吗?? 谢谢
我读过很多关于RabbitMQ中交换的文章。但我找不到任何有用的文章来解释每个交换的用例。他们所说的是 直接交换-绑定密钥和路由密钥应该相同。 主题交换-路由键应与绑定键的路由模式匹配。 扇出交换——所有绑定到特定交换的队列都将得到消息。 标题交换-标题应该与关键字匹配。 有人能详细解释它的每个交换和用法吗?
我花了整整一天的时间来尝试让spring-AMQP示例项目在docker版本的RabbitMQ上运行。我只是在运行标准的rabbitmq Docker。虽然我没有连接问题,但我总是得到与创建队列相关的异常,并且我已经尝试了所有可能的变体,在这一点上。 我尝试在我的配置中声明队列,就像示例项目一样。我尝试显式配置RabbitAdmin。我已经尝试显式配置整个自动配置混乱。我在rabbitmq中创建了
我想创建一个可以从不同线程调用的RabbitMQ发布服务器。 基于RabbitMQ最佳实践,我不应该允许在不同线程中使用同一通道,因此在发布服务器的多个实例中共享此通道将会导致问题。 我能想到的唯一解决方案是拥有一个具有内部队列的管理器线程,该队列实现一个内部生产者-消费者,而单个消费者仅存在于该线程中。 有没有更简单的方法?由于显而易见的原因,希望尽可能避免同步,但此解决方案不允许这样做。
我在vm上运行rabbitMQ服务器。我正在学习rabbitMQ java教程。它在vm上本地运行良好,但当尝试从主机发送时,我遇到了一个异常 以下是我正在使用的发送代码: 我可以ping服务器在192.168.198.100但我不能访问管理UI在192.168.198.100:15672/ 有人能帮我弄清楚这个问题出了什么问题吗?提前感谢。