Java使用RabbitMQ(十)--常用操作以及注意事项

为了防止众所周知的身份信息用于生产环境的系统,guest只能用来访问本地。

channel可以主动关闭,但是这不是必须的,在关闭它所依赖的连接时,channel也会自动被关闭。

connection设计为长连接。

有个no wait 版本的队列

channel.queueDeclareNoWait(queueName, true, false, false, null);

这种队列不接收rabbitmq的返回消息。效率更高,但是安全性低。只适合复杂拓扑结构的生产情景。依赖心跳机制发现错误操作。

删除队列

channel.queueDelete("queue-name")

只删除空队列

channel.queueDelete("queue-name", false, true)

只删除不被使用(没有消费者连接)的队列

channel.queueDelete("queue-name", true, false)

清空一个队列

channel.queuePurge("queue-name")

添加消息头

Map<String, Object> headers = new HashMap<String, Object>();
headers.put("latitude",  51.5252949);
headers.put("longitude", -0.0905493);

channel.basicPublish(exchangeName, routingKey,
             new AMQP.BasicProperties.Builder()
               .headers(headers)
               .build()),
               messageBodyBytes);

带过期时间的消息:

channel.basicPublish(exchangeName, routingKey,
             new AMQP.BasicProperties.Builder()
               .expiration("60000")
               .build()),
               messageBodyBytes);

通道和并发注意事项

  • 避免在多个线程中共享通道,而是每个线程一个通道。
  • 通道中的一些操作可以并发执行,一些不行(比如可能会导致二次ack)
  • 为每一个publish创建一个channel也是不可取的,channel被设计为长连接,可以复用,创建太多影响性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值