我正在尝试从这里使用带有 RabbitMqBundle 的syfmony2 框架
我确信我的 rabbitmq 服务器已启动并正在运行,并且我正在根据 github 上提供的文档进行配置和发布者代码。不幸的是,我无法将任何消息添加到队列中。
我确信我的 rabbitmq 服务器已经启动并正在运行。我有根据 symfony 配置文件命名的队列。
有人知道出了什么问题吗?
在此先感谢您的任何建议。
我正在尝试从这里使用带有 RabbitMqBundle 的syfmony2 框架
我确信我的 rabbitmq 服务器已启动并正在运行,并且我正在根据 github 上提供的文档进行配置和发布者代码。不幸的是,我无法将任何消息添加到队列中。
我确信我的 rabbitmq 服务器已经启动并正在运行。我有根据 symfony 配置文件命名的队列。
有人知道出了什么问题吗?
在此先感谢您的任何建议。
好吧...试试这个简单的例子
# app/config.yml
old_sound_rabbit_mq:
connections: %rabbitmq_connections%
producers: %rabbitmq_producers%
consumers: %rabbitmq_consumers%
parameters:
# connection parameters
rabbitmq_connections:
default: { host: 'localhost', port: 5672, user: 'guest', password: 'guest', vhost: '/' }
# define producers
rabbitmq_producers:
sample:
connection: default
exchange_options: {name: 'exchange_name', type: direct, auto_delete: false, durable: true}
# define consumers
rabbitmq_consumers:
sample:
connection: default
exchange_options: {name: 'exchange_name', type: direct, auto_delete: false, durable: true}
queue_options: {name: 'sample', auto_delete: false}
callback: rabbitmq.callback.service
那么你应该定义你的回调服务。随意放入app/config.yml
services:
rabbitmq.callback.service:
class: RabbitMQ\Callback\Service
是的。你应该写这个回调服务。这是简单的实现。应该足以理解并检查它是否适合您。
namespace RabbitMQ\Callback;
use OldSound\RabbitMqBundle\RabbitMq\ConsumerInterface;
use PhpAmqpLib\Channel\AMQPChannel;
use PhpAmqpLib\Message\AMQPMessage;
class Service implements ConsumerInterface
{
public function execute(AMQPMessage $msg)
{
var_dump(unserialize($msg->body));
}
}
然后你应该启动rabbitmq服务器,运行消费者并检查是否添加了新的交换和队列。要运行测试消费者,您应该运行
app/console rabbitmq:consumer sample --route="sample"
在你的控制器中(你想向rabbitMQ发送消息的地方放下一个代码
# get producer service
$producer = $this->get('old_sound_rabbit_mq.sample_producer');
# publish message
$producer->publish(serialize(array('foo'=>'bar','_FOO'=>'_BAR')), 'sample');
希望它或多或少清楚,并会帮助你使用rabbitmq。
PS:如果你有rabbitmq管理插件,调试起来会更容易。如果没有,请使用控制台命令,例如rabbitmqctl
检查队列/交换/消费者等...
并且很高兴看到您的生产者/消费者配置。回调服务代码也是如此。
我在使用此捆绑包发送消息时也遇到了一些问题,我建议您尝试使用 SonataNotificationBundle。
您还可以安装RabbitMq 管理插件来查看排队的消息。