在队列选项卡的rabbitMQ Web界面上,我看到"概述"面板,我在其中找到了这些:
排队的消息:
我猜是什么是"总计"消息.但是什么是"准备好"和"未被承认"?"准备好" - 传递给消费者的消息?"未被承认" - ?
消息率:
这些消息是什么?特别是"Redelivered"和"Acknowledge"?这是什么意思?
我在这里不知所措,所以我正在接受集体知识,希望有一个奇迹.
我使用默认值在Linux机器上安装了RabbitMQ.
当我使用这个代码(和默认的RabbitMQ安装配置)时,一切都很好.
var connectionFactory = new ConnectionFactory();
connectionFactory.HostName = "192.168.0.12";
IConnection connection = connectionFactory.CreateConnection();
Run Code Online (Sandbox Code Playgroud)
但是当我向RabbitMQ添加用户并尝试使用以下代码时(用户名和密码已被更改以保护无辜.:))
var connectionFactory = new ConnectionFactory();
connectionFactory.HostName = "192.168.0.12";
connectionFactory.UserName = "user";
connectionFactory.Password = "password";
IConnection connection = connectionFactory.CreateConnection();
Run Code Online (Sandbox Code Playgroud)
该connectionFactory.CreateConnection()方法抛出以下异常:
BrokerUnreachableException
None of the specified endpoints were reachable
Run Code Online (Sandbox Code Playgroud)
检查RabbitMQ日志文件我可以看到它抱怨凭据:
{amqp_error,access_refused,
"PLAIN login refused: user 'user' - invalid credentials",
'connection.start_ok'}}
Run Code Online (Sandbox Code Playgroud)
问题是我对用户名和密码充满信心,我不能因为喜欢编码而在任何地方找到解决方案.
我必须遗漏一些明显的东西,但我无法弄清楚它是什么.对于任何有用的指示,我将不胜感激.
我正在使用带有grails的rabbitMQ,今天早上出现了一个问题.当我运行rabbitmqctl status时它会告诉我:
C:\Users\BuildnTest2>rabbitmqctl status
Status of node 'rabbit@BUILDNTEST2-PC' ...
Error: unable to connect to node 'rabbit@BUILDNTEST2-PC': nodedown diagnostics:
- nodes and their ports on BUILDNTEST2-PC: [{rabbit,49164},
{rabbitmqctl27693,49286}]
- current node: 'rabbitmqctl27693@BuildnTest2-PC'
- current node home dir: C:\Users\BuildnTest2
- current node cookie hash: cSYB8tsT4mGGZHSUGQi08w==
Run Code Online (Sandbox Code Playgroud)
当我进入兔子故障排除页面时:http://www.rabbitmq.com/troubleshooting.html他们说:
then you should make sure the erlang cookies are the same.
Run Code Online (Sandbox Code Playgroud)
这是什么意思,它是如何实现的?
谷歌搜索发现这个论坛帖子http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2011-January/010806.html声称有解决这个问题的说明,但唉它只是重定向回兔子网站那里不是答案.
在我们的项目中,我们希望在"任务队列"模式中使用RabbitMQ来传递数据.
在生产者方面,我们构建了一些TCP服务器(在node.js中)来收集高并发数据并将其发送到MQ而不做任何事情.
在消费者方面,我们使用JAVA客户端从MQ获取任务数据,处理它然后确认.
所以问题是:要获得最大的消息传递吞吐量/性能(例如,400,000 msg /秒),最好有多少个队列?更多队列是否意味着更好的吞吐量/性能?还有什么我应该注意到的吗?在这种情况下使用RabbitMQ的任何已知最佳实践指南?
任何评论都非常感谢!!
我启动并安装了Rabbit MQ.该服务也在运行.但是,当我尝试在firefox中打开管理界面时,我收到此错误:
Firefox无法在localhost建立与服务器的连接:#####.(#####是我试过的几个端口号).
我检查了端口,确保它们是正确的,并尝试重新安装RabbitMQ.
有想法该怎么解决这个吗?
我开始使用rabbit.js从node.js应用程序连接到RabbitMQ.
我被阻止了:
错误:服务器关闭了通道:403(ACCESS-REFUSED),并
在Channel.C.accept(/.../rabbit.js/node_modules/amqplib/lib/channel 上)显示消息"默认交换时不允许使用ACCESS_REFUSED - 操作" . js:398:24
)
在Socket.go(/.../ rabbit)的Connection.mainAccept [as accept](/.../ rabbit.js/node_modules/amqplib/lib/ connection.js :63:33). js/node_modules/amqplib/lib/connection.js:448:48)
在Socket.EventEmitter.emit(events.js:92:17)
...
这是预期的,因为我使用的RabbitMQ实例被配置为要求发布者和订阅者在能够使用消息队列之前提供凭据,并禁用来宾帐户.
rabbit.js的官方文档没有提到凭据.Google搜索"rabbit.js指定凭据"和"rabbit.js登录密码"尚无定论.
是否支持rabbit.js的凭据?如果没有,node.js的其他RabbitMQ客户端是否支持它们?
我创建了一个ASP.NET Core MVC/WebApi站点,该站点有一个RabbitMQ订阅者,基于James Still的博客文章Real-World PubSub Messaging with RabbitMQ.
在他的文章中,他使用静态类来启动队列订阅者并为排队事件定义事件处理程序.然后,此静态方法通过静态工厂类实例化事件处理程序类.
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
namespace NST.Web.MessageProcessing
{
public static class MessageListener
{
private static IConnection _connection;
private static IModel _channel;
public static void Start(string hostName, string userName, string password, int port)
{
var factory = new ConnectionFactory
{
HostName = hostName,
Port = port,
UserName = userName,
Password = password,
VirtualHost = "/",
AutomaticRecoveryEnabled = true,
NetworkRecoveryInterval = TimeSpan.FromSeconds(15)
};
_connection = factory.CreateConnection();
_channel = …Run Code Online (Sandbox Code Playgroud) c# dependency-injection rabbitmq service-locator asp.net-core
这可能已经被问到了,但到目前为止我找不到任何详细的解释,并且存在文档......好吧,好像它是针对那些应该知道所有事情的心理学家而写的......
根据这本手册,我添加了容器
docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:latest
Run Code Online (Sandbox Code Playgroud)
然后我检查它接收容器ip
docker inspect some-rabbit
Run Code Online (Sandbox Code Playgroud)
检查端口
docker ps
Run Code Online (Sandbox Code Playgroud)
并尝试通过此公式在浏览器中连接
https://{container-ip}:{port}
Run Code Online (Sandbox Code Playgroud)
没有成功
我做错了什么,或者我应该添加一些额外的东西,比如apache或其他东西的容器?
编辑
据我所知,在创建一些兔子容器后,现在我需要运行Dockerfile来创建图像?(这整件事让我感到困惑).我该怎么做?我的意思是,我看到了命令,docker build -f /path/to/a/Dockerfile但是如果我将Dockerfile放在第二条路径中D:\Docker\rabbitmq,我应该如何到达那里?(路径似乎没有被识别)
在消费者获得消息之后,消费者/工作者进行一些验证然后调用Web服务.在此阶段,如果发生任何错误或验证失败,我们希望将消息放回最初使用的队列.
我读过RabbitMQ文档.但我对reject,nack和cancel方法之间的区别感到困惑.