rabbitmq

运行识别程序还需要安装VS20152019的redistribution包。

安装完成之后启动,会出现Authentication failed (rejected by the remote node), please check the Erlang cookie.

解决办法就是把.erlang.cookie文件从C:\Windows\system32\config\systemprofile\.erlang.cookie复制到C:\Users\James目录下解决。

安装完成之后,会出现管理页面打不开,需要安装管理插件:

 

rabbitmq-plugins enable rabbitmq_managementenable rabbitmq_management

然后:localhost:12576 用guest/guest登陆

一个connection是一个tcp连接, 一个channel是虚拟连接, channel可以有很多个, channel提交消息到broker, 背后相当于创建一个queue, 对于多线程来说, 最好一个线程一个channel. 在一个channel里面的请求被串行化了. channel是线程安全的.

consumer相当于回调函数, 当消息到来的时候, handleDelivery被调用, 当一个consumer被绑定到多个queue, 需要注意handleDelivery是由多个线程调用的. 注意同步.

https://stackoverflow.com/questions/18418936/rabbitmq-and-relationship-between-channel-and-connection

用rabbitmqctl status可以产看rabbitmq版本

删除单个queue的所有消息用:

rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged

rabbitmq主端口为5672

rabbitmq 3.x之后默认的guest/guest不能连接远程的服务器, 需要创建新的用户名和密码, 

$ rabbitmqctl add_user YOUR_USERNAME YOUR_PASSWORD
$ rabbitmqctl set_user_tags YOUR_USERNAME administrator
$ rabbitmqctl set_permissions -p / YOUR_USERNAME ".*" ".*" ".*"

https://stackoverflow.com/questions/26811924/spring-amqp-rabbitmq-3-3-5-access-refused-login-was-refused-using-authentica

rabbitmq管理控制台端口:

 

RabbitMQ Management console:

  • PORT 15672 for RabbitMQ version 3.x
  • PORT 55672 for RabbitMQ pre 3.x

远程不能登录的帖子, 强调一下用户必须具有administrator身份.

https://stackoverflow.com/questions/23669780/rabbitmq-3-3-1-can-not-login-with-guest-guest

Windows上rabbitmq服务器不工作, 可能是环境变量没有设置好, 要用administrator身份来安装, 安装完成之后需要check环境变量.

如果是服务启动, 启动停止命令为:

sbin>rabbitmq-service.bat start

sbin>rabbitmq-service.bat stop

列举用户:

rabbitmqctl.bat list_users

rabbitmq java发送对象需要定义MessageConverter这个bean:

@Bean

public MessageConverter jsonMessageConverter(){

    return new Jackson2JsonMessageConverter();

}

然后设置到rabbitTemplate里面:

public AmqpTemplate rabbitTemplate(ConnectionFactory connectionFactory) {

    final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);

    rabbitTemplate.setMessageConverter(jsonMessageConverter());

    return rabbitTemplate;

}

具体参看:

https://grokonez.com/spring-framework/spring-amqp/rabbitmq-sendreceive-java-object-messages-spring-rabbitmq-springboot

在.net的情况下, 发送对象, 如果用json, 需要json.net, 设置IBasicProperties, 里面有个属性:ContentType:

[Serializable]

IBasicProperties basicProperties = model.CreateBasicProperties();

basicProperties.SetPersistent(true);

basicProperties.ContentType = "application/json";

细节请看:

https://dotnetcodr.com/2014/06/05/rabbitmq-in-net-data-serialisation/

讲rabbitmq文件位置的:

https://www.rabbitmq.com/relocate.html

如何在Windows server上安装rabbitmq:

https://oeskeide.com/2014/08/15/installing-rabbitmq-on-windows-server-3/

我们已经学会了如何确保即使消费者死亡,任务也不会丢失。但是,如果rabbitMQ服务器停止,我们的任务仍然会丢失。

当 RabbitmQ 退出或崩溃时,它会忘记队列和消息,除非您告诉它不要这样做。需要两件事情来确保消息不会丢失:我们需要将队列和消息标记为持久。

首先,我们需要确保 RabaMQ 永远不会丢失我们的队列。为此,我们需要将其声明为durable:

durable是rabbitmq范围的

persistent是message范围的

具体区别请看:

https://asafdav2.github.io/2017/rabbit-mq-persistentcy-vs-durability/

exclusive设为true的时候, 队列变为私有的, 只能被你的app消费, 如果想要限制一个队列只对一个consumer服务的话, 这个很有用. 如果当前的连接断开了, 这个队列就没有了.

一般exclusive和auto-delete一起用, 但是exclusive就够了.参看:

https://stackoverflow.com/questions/21248563/rabbitmq-difference-between-exclusive-and-auto-delete

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

novodexx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值