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

网站源码提取可以带锚文本的网站

网站源码提取,可以带锚文本的网站,吉安做网站优化,在网上那里能接单做网站连接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.yayakq.cn/news/146038/

相关文章:

  • 北京网站制作公司排名wordpress代码高亮插件
  • 金湖建设工程质量监督网站动态背景网站
  • 文山州建设局信息网站昆明做网站做的好的公司
  • 广州网站开发水平广州亦客网络青海省建设厅网站姚宽一
  • 织梦旅游网站阿里巴巴推广平台
  • php怎么给网站做spmWordPress换主题图片不适应
  • 网站友情链接怎么样做电脑网站设计公司
  • 图书网站建设方案陕煤建设集团铜川分公司网站
  • 直缝钢管网站建设网络营销实训报告
  • 广宗网站建设中国域名后缀
  • 藁城住房和城乡建设局网站海珠区有没有专门做网站的地方
  • 延边有没有做网站的网络彩票网站开发
  • 网站建设网络拓扑拓什么设计网站
  • 宁波网站建设大概要多少钱网站logo如何修改
  • 用php做的企业网站作业空间转移 wordpress
  • 嘉兴网站搭建上海小程序定制公司
  • led网站模板郑州微科网站建设
  • 国内做网站大公司有哪些整体软装设计公司
  • 苏州免费网站制作免费跨境电商平台有哪些
  • 什么行业需要做网站合理的网站结构
  • 营销网站域名设计网页设计师工资水平
  • 网站建设是多少钱门户网站服务范围
  • 门户网站解决方案建地方门户网站
  • 黄江镇网站建设公司网站建设相关职业岗位职责
  • 广州网站建设广州网络推广公司排名上海闵行区兼职网
  • 一个域名怎么做多个网站百度百科网站开发
  • 怎么建设电影网站o2o平台系统开发
  • 大气宽屏的网站网站设计网站制作
  • 做网站选择虚拟主机好是服务器公司官网首页设计
  • 专业生产车间设计图纸网站信用平台网站建设建议