当前位置: 首页 > news >正文

郑州百度网站推广h5网站制作平台

郑州百度网站推广,h5网站制作平台,有什么做任务的网站吗,现在疫情严重吗最新消息连接RabbitMQ 1.创建ConnectionFactory,给定参数ip地址,端口号,用户名和密码等 2.创建ConnectionFactory,使用uri方式实现,创建channel。 注意: Connection可以用来创建多个channel实例,但c…

连接RabbitMQ

1.创建ConnectionFactory,给定参数ip地址,端口号,用户名和密码等

2.创建ConnectionFactory,使用uri方式实现,创建channel。

注意:

Connection可以用来创建多个channel实例,但channel实例不能在线程间共享,应用程序为每个线程开辟一个channel。多线程间共享channel实例是非线程安全的。

Channel或connection有个isOpen方法可以用来检测其是否已处于开启状态,但不推荐使用有可能会产生竞争。

在调用createxx或newxx方法后,可以认为Connection和channel已经处于开启状态,而不会使用isopen检测,如果使用channel时已经处于关闭状态,那么程序会抛出一个ShutdownSignalException,只需捕获异常即可。

使用交换器和队列

交换器和队列是amqp中high-level层面的构建模块,需确保在使用他们的时候就已经存在,在使用前需要声明他们

声明

//创建一个持久化的,非自动删除的,绑定类型为direct的交换器
//创建一个非持久化,排他的,自动删除的队列
//使用路由键将队列和交换器绑定起来
channel.exchangeDeclare(exchangeName,"direct",true);
String queueName = channel.queueDeclare().getQueue();
channel.queueBind(queueName,exchangeName,routingKey);

何时创建

rabbitmq消息存储在队列中,交换器不真正耗费服务器的性能,队列会。实际业务中,需要对所创建的队列的流量、内存占用及网卡占用有一个清晰的认知,预估其平均值和峰值。

预先创建好资源可以确保交换器和队列之间正确绑定匹配。

发送消息

使用channel类的basicPublish方法

byte[] messageBodyBytes = “Hello,world”.getBytes();

channel.basicPublish(exchangeName,routingKey,null,messageBodyBytes);

mandatory参数可以控制发送

消费消息

消费模式分为推模式和拉模式

推模式Basic.Consume

一般通过实现Consumer接口或继承DefaultConsumer类实现。当调用与Consumer相关的api方法时,不同的订阅采用不同的消费者标签来区分彼此,在同一个channel中的消费者也需要通过唯一的消费者标签作区分。

拉模式Basic.Get

通过channel.basicGet方法可以单条获取消息,返回值GetRespone。

消费端的确认与拒绝

消息确认

消费者订阅队列时,指定autoAck参数

  • autoAck==false:rabbitmq会等待消费者显式恢复确认信号才从内存中移去消息。
    • 对于rabbitmq服务端而言,队列中消息分为两部分
      • 等待投递给消费者的消息
      • 已经投递给消费者但还没有收到消费者确认信号的消息
    • 如果rabbitmq一直没有收到消费者的确认信号,并且消费此消息的消费者已经断开连接,则rabbitmq会安排该消息重新进入队列,等待投递给下一个消费者,当然也有可能还是原来的那个消费者。
    • rabbitmq不会为未确认的消息设置过期时间,他判断此消息是否需要重新投递给消费者的唯一依据是消费该消息的消费者连接是否已经断开。rabbitmq允许消费者消费一条消息的时间可以很久很久
  • autoAck==true:rabbitmq会自动把发送的消息置为确认,然后从内存中删除,不管消费者是否真正地消费到这些消息

消息拒绝

  • Basic.Reject:消费者客户端可以调用与其对应的channel.basicReject
  • Basic.Nack:reject命令一次只能拒绝一条消息,如果想批量拒绝,使用Basic.Nack
  • Basic.Reover:具备可重入队列特性,用来请求rabbitmq重新发送还未被确认的消息。
    • true:未被确认的消息会被重新加入到队列中,这样对于同一条消息来说,可能会被分配给与之前不同的消费者,默认为true
    • false:同一条消息会被分配给与之前相同的消费者。

关闭连接

channel.close();

conn.close();

Connection和Channel生命周期

  • open():开启状态,代表当前对象可以使用

  • closing():正在关闭状态,当前对象被显示地通知调用关闭方法,这样产生了一个关闭请求让其内部对象进行相应的操作,并等待这些关闭操作完成

  • closed():已经关闭状态,当前对象已经接收到所有的内部对象已完成关闭动作的通知,并且也关闭了自身。

  • getCloseReason:获取对象关闭原因

  • 当触发shutdownListener时,可以获取到ShutdownSignalException,包含了关闭的原因,可以通过调用getCloseReason获取。

    • isHardError可以知道是Connection还是Channel的错误
    • getReason可以获取cause相关的信息

参考:《RabbitMQ实战指南》

http://www.mmbaike.com/news/41298.html

相关文章:

  • 个人网站如何赚钱常见的网络营销平台有哪些
  • 网站建设模版 优帮云站长工具中文精品
  • 微信公众号托管代运营公司排名seo
  • 响应式企业网站建设找谁做百度关键词排名
  • 香港特别行政区装饰网站建设简单网页制作成品和代码
  • 安全的营销型网站制作最近一周热点新闻
  • 微信二维码生成器合肥seo排名优化公司
  • 互联网官网嘉定区整站seo十大排名
  • 五华区网站seo站内优化教程
  • 做电商图的设计网站网站模板库官网
  • 南京市住房和城乡建设部网站2024最火的十大新闻
  • 企业 门户型网站区别人民网 疫情
  • 小型网站建设的经验百度客服人工电话
  • 网站开发app小程序廊坊seo关键词优化
  • 《动态网站建设》在线测试怎样建立一个网络销售平台
  • 不用代码做交互式网站网站推广优化c重庆
  • 企业网站关键词排名电商运营基本知识
  • 域名申请网站网站创建流程
  • python发wordpress抚顺优化seo
  • 制作一个.net网站需要网站老域名跳转到新域名
  • 南通哪里有做网站的公众号关键词排名优化
  • h5 做移动端网站百度一键安装
  • 诸城营销型网站建设西安新站网站推广优化
  • 网站建设与规划心得体会临沂seo推广
  • 无锡网站建设设计我赢网提供的高水平网页设计师
  • 网站首页做多大分辨率windows优化大师有哪些功能
  • 网站开发主要用到哪些工具简单的网页设计
  • 检测WordPress网站的安全性商品标题优化
  • 宝宝投票网站怎么做的开封网站推广
  • 网站运营目的莆田seo