• 关于

    消息队列

    的搜索结果

问题

linux下消息队列, 如何在满足某种条件下将队列清空?

杨冬芳 2019-12-01 20:25:09 1291 浏览量 回答数 1

问题

【精品问答】消息队列 AMQP 版

montos 2020-04-08 12:22:31 3 浏览量 回答数 1

回答

消息队列发生消息后,可能消费者宕机而无法消费。绝大多数消息中间件对于这种情况,例如 RabbitMQ、RocketMQ 等引入了 ACK 机制。注意的是,默认的情况下,采用自动应答,这种方式中消息队列会发送消息后立即从消息队列中删除该消息。所以,为了确保消息的可靠投递,我们通过手动 ACK 方式,如果消费者因宕机等原因没有发送 ACK,消息队列会将消息重新发送,保证消息的可靠性。从业务服务处理完相关业务后通过手动 ACK 通知消息队列,消息队列才从消息队列中删除该持久化消息。那么,消息队列如果一直重试失败而无法投递,就会出现消息主动丢弃的情况,我们需要如何解决呢?主业务服务将要发送的消息持久化到本地数据库。从业务服务消费成功后,它也会向消息队列发送一个通知消息,此时它是一个消息的生产者。消费者接收到消息后,最终把本地的持久化消息标志状态为“完成”状态。说到这里,我们应该可以理解到使用“正反向消息机制”确保了消息队列可靠事件投递。当然,补偿机制也是必不可少的。定时任务会从数据库扫描在一定时间内未完成的消息并重新投递。 来源:云原生后端社区

Atom 2020-04-25 14:39:03 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

消息队列发生消息后,可能消费者宕机而无法消费。绝大多数消息中间件对于这种情况,例如 RabbitMQ、RocketMQ 等引入了 ACK 机制。注意的是,默认的情况下,采用自动应答,这种方式中消息队列会发送消息后立即从消息队列中删除该消息。所以,为了确保消息的可靠投递,我们通过手动 ACK 方式,如果消费者因宕机等原因没有发送 ACK,消息队列会将消息重新发送,保证消息的可靠性。从业务服务处理完相关业务后通过手动 ACK 通知消息队列,消息队列才从消息队列中删除该持久化消息。那么,消息队列如果一直重试失败而无法投递,就会出现消息主动丢弃的情况,我们需要如何解决呢?主业务服务将要发送的消息持久化到本地数据库。从业务服务消费成功后,它也会向消息队列发送一个通知消息,此时它是一个消息的生产者。消费者接收到消息后,最终把本地的持久化消息标志状态为“完成”状态。说到这里,我们应该可以理解到使用“正反向消息机制”确保了消息队列可靠事件投递。当然,补偿机制也是必不可少的。定时任务会从数据库扫描在一定时间内未完成的消息并重新投递。 来源:云原生后端社区

Atom 2020-04-25 15:27:52 0 浏览量 回答数 0

问题

消息服务的Account什么用处?

轩墨 2019-12-01 22:10:39 1357 浏览量 回答数 0

问题

使用消息队列的 10 个理由

小柒2012 2019-12-01 21:20:11 6703 浏览量 回答数 1

问题

消息服务的Queue是什么?

轩墨 2019-12-01 22:09:42 1032 浏览量 回答数 0

问题

消息服务的Queue什么用处?

轩墨 2019-12-01 22:10:39 1207 浏览量 回答数 0

问题

Account是什么?

轩墨 2019-12-01 22:09:41 1119 浏览量 回答数 0

问题

消息服务的队列如何操作?

轩墨 2019-12-01 22:07:39 987 浏览量 回答数 0

问题

消息服务的队列如何使用?

轩墨 2019-12-01 22:08:37 1080 浏览量 回答数 0

问题

【精品问答】消息队列 RocketMQ 版

montos 2020-04-08 12:31:53 4 浏览量 回答数 1

问题

【精品问答】微消息队列 MQTT 版

montos 2020-04-08 12:20:13 3 浏览量 回答数 1

回答

两种类型的队列: 1、同步队列,当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达。 2、队列按照 FIFO 方式进行入队和出队操作。 第一类,在约定目录下创建临时目录节点,监听节点数目是否是我们要求的数目。 第二类,和分布式锁服务中的控制时序场景基本原理一致,入列有编号,出列按编号。在特定的目录下创建PERSISTENT_SEQUENTIAL节点,创建成功时Watcher通知等待的队列,队列删除序列号最小的节点用以消费。此场景下Zookeeper的znode用于消息存储,znode存储的数据就是消息队列中的消息内容,SEQUENTIAL序列号就是消息的编号,按序取出即可。由于创建的节点是持久化的,所以不必担心队列消息的丢失问题。

montos 2020-05-24 11:27:51 0 浏览量 回答数 0

回答

来个个人通俗的解释吧。 消息队列,顾名思义 首先是个队列。 队列的操作有入队和出队也就是你有一个程序在产生内容然后入队(生产者)另一个程序读取内容,内容出队(消费者)这是最最基本的概念。我想你应该是缺乏一个使用场景。当你不需要立即获得结果,但是并发量又不能无限大的时候,差不多就是你需要使用消息队列的时候。比如你写日志,因为可能一个客户端有多个操作去写,又有很多个客户端,显然并发不能无穷大,于是你就需要把写日志的请求放入到消息队列里,在消费者那边依次把队列中产生的日志写到数据库里。至于怎么实现消息队列,其实你本身一个普通的队列就行呀~看你需要什么附加功能而已。

蛮大人123 2019-12-02 01:54:00 0 浏览量 回答数 0

回答

MNS配置消息队列 首先用户需要在消息服务配置队列以接收工作流发出的消息。具体操作流程如下:消息服务->队列->选择数据中心->创建队列,界面如下图。 1 新建队列必填的参数包括队列名称和当前地域,其他参数均为可选值,这些参数的意义如下: 消息接收长轮询等待时间:表示轮询等待的时间,也就是针对该队列的所有ReceiveMessage请求在Queue无消息时,都将默认进入到Polling等待状态,在等待期间一直保持无消息,则会返回MessageNotExist;如果在此期间有新的消息进入到Queue中,则会唤醒相应的ReceiveMessage请求进行返回。这里默认值为0秒,即关闭长轮询。 取出消息隐藏时长:表示消息从队列中取出后保持隐藏状态的时间。消息从队列中取出后会被从可取状态(Active)变成隐藏状态(Inactive)后,这个时间一到,消息会从隐藏恢复成Active可取状态。这里默认值为30秒。 消息最大长度:限定允许发送到该队列的消息体的最大长度,默认值为64KB,建议这里不要设置太小,因为工作流发送消息体内容较多,如果设置较小可能会导致无法接收到消息。 消息存活时间: 表示消息在本队列中最长的存活时间,从发送到该队列开始经过此参数指定的时间后,不论消息是否被取出过都将被删除,目前默认值为4天。 消息延时:表示消息可供消费的延迟时间,发送消息到本队列的所有消息默认将以本参数指定的秒数延后可被消费,默认值为0秒。 开启logging:表示将该队列中的日志推送到OSS或者SLS中。这里需要在日志管理中配置,配置方法请参考【推送日志到OSS】和【推送日志到LogService】,默认为不开启状态。 2.2 工作流配置消息模式 用户接下来需要将工作流与消息服务中的该队列相关联,在编辑工作流的输入节点时即可设置消息队列,如下图。用户设置消息类别为队列,队列名称选择之前我们设置的名称即关联完成。 2 2.3 MNS队列接收示例代码 上述流程配置完成后即执行工作流并通过MNS队列获取其中的消息。获取MNS队列中的消息可以通过MNS的API/SDK方式获取。这里以Java SDK的使用作为示例进行演示。 首先需要获取MNS相关信息,主要包括:AccessKeyId、AccessKeySecret、MNSEndpoint和队列名称。AccessKeyId和AccessKeySecret获取方法请登陆阿里云管理控制台,在下图中的按钮中获取。 3 MNS队列的名称即是我们前述创建的队列的名称,可以在MNS控制台中的队列列表中查看。而MNSEndpoint表示连接该队列的地址,可以通过MNS控制台中的“获取Endpoint”按钮获取得到,如下图中可以查看到每个账号在每个数据中心对应三个MNSEndpoint,分别是公网地址、私网地址和VPC地址。公网地址即是在有公网IP的服务器上均可使用,私网地址是指同一数据中心的阿里云经典网络的云服务器ECS上连接MNS可以使用的地址,而VPC地址即是同一数据中心的阿里云VPC网络的云服务器ECS的内网连接地址。 4 接下来即是构建Java测试环境,这里我们采用maven方式构建project。下面即是我们添加的依赖项和示例代码。 <dependency> <groupId>com.aliyun.mns</groupId> <artifactId>aliyun-sdk-mns</artifactId> <version>1.1.5</version> </dependency> public class ConsumerDemo { public static void main(String[] args) { CloudAccount account = new CloudAccount("YourAccessId", "YourAccessKey", "MNSEndpoint"); MNSClient client = account.getMNSClient(); // 在程序中,CloudAccount以及MNSClient单例实现即可,多线程安全 try{ CloudQueue queue = client.getQueueRef("TestQueue"); Message popMsg = queue.popMessage(); if (popMsg != null){ System.out.println("message handle: " + popMsg.getReceiptHandle()); System.out.println("message body: " + popMsg.getMessageBodyAsString()); System.out.println("message id: " + popMsg.getMessageId()); System.out.println("message dequeue count:" + popMsg.getDequeueCount()); //删除已经取出消费的消息 queue.deleteMessage(popMsg.getReceiptHandle()); System.out.println("delete message successfully.\n"); } else{ System.out.println("message not exist in TestQueue.\n"); } } catch (ClientException ce) { System.out.println("Something wrong with the network connection between client and MNS service." + "Please check your network and DNS availablity."); ce.printStackTrace(); } catch (ServiceException se) { se.printStackTrace(); logger.error("MNS exception requestId:" + se.getRequestId(), se); if (se.getErrorCode() != null) { if (se.getErrorCode().equals("QueueNotExist")) { System.out.println("Queue is not exist.Please create before use"); } else if (se.getErrorCode().equals("TimeExpired")) { System.out.println("The request is time expired. Please check your local machine timeclock"); } /* you can get more MNS service error code from following link: https://help.aliyun.com/document_detail/mns/api_reference/error_code/error_code.html */ } } catch (Exception e) { System.out.println("Unknown exception happened!"); e.printStackTrace(); } client.close(); } } 3. 注意事项 工作流需要配置同一数据中心的消息队列,不支持配置跨地域的消息队列。 在队列中消费消息后需要调用deleteMessage方法删除该消息,否则会导致应用端重复消费消息。

保持可爱mmm 2020-03-30 11:56:56 0 浏览量 回答数 0

问题

如何使用kubernetes扩展作业队列

k8s小能手 2019-12-01 19:30:27 594 浏览量 回答数 1

问题

消息服务MNS中的队列模型拉取消息问题

dsfsf 2019-12-01 19:32:19 1034 浏览量 回答数 1

回答

消息队列其实就是异步解耦吧,比如发送邮箱验证,发送验证码,还有一些不需要及时反馈的信息,一般这些会加入消息队列。 队列一般都是先进先出,程序会有一个监听,监听到队列中是否有信息,有就会自动去处理。当然这些可能一些开源软件都封装好了。 好处: 一是为了加快前台页面响应。 二是减轻数据库压力。 一般来说消息队列 redis就可以实现,楼主可以搜一下redis实现消息队列。 ------------------------- 如果不是很大型 高并发的项目 没必要做消息队列,其实比如发送短信或者邮件异步实现就可以了。

小柒2012 2019-12-02 01:47:35 0 浏览量 回答数 0

问题

在项目同时使用RocketMQ与消息队列 MQ,会导致消息队列 MQ的消费者不在线,请问两者可以同时混用吗?

soham 2019-12-01 20:26:56 1647 浏览量 回答数 1

回答

MessageId用来标识在队列/主题中的一个消息,在一个队列/主题中每个消息都有唯一的MessageId,但在不同的队列/主题之间中并不唯一。 当消息发送到MNS队列/主题时,MNS会生成一个MessageId,此ID一旦产生就不会改变。 在队列模式下,当消息被取出时,MNS会将消息的消息体、MessageId以及该次请求的临时句柄( ReceiptHandle )一齐返回给用户。在有效期内,用户消费完毕之后,使用ReceiptHandle进行消息的删除。

保持可爱mmm 2020-03-29 00:07:20 0 浏览量 回答数 0

问题

到底什么是消息队列?Java中如何实现消息队列?

蛮大人123 2019-12-01 20:02:30 1412 浏览量 回答数 2

问题

【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?

剑曼红尘 2020-04-16 16:29:17 31 浏览量 回答数 2

问题

消息服务如何查看日志LogService?

轩墨 2019-12-01 22:08:22 1250 浏览量 回答数 0

回答

amqp协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列。 生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机。 先由Exchange来接收,然后Exchange按照特定的策略转发到Queue进行存储。 同理,消费者也是如此。Exchange 就类似于一个交换机,转发各个消息分发到相应的队列中。 -------------------------------------------------- type=fanout 类似发布者订阅者模式,会为每一个订阅者创建一个队列,而发布者发布消息时,会将消息放置在所有相关队列中 type=direct 队列绑定关键字,发送者将数据根据关键字发送到消息exchange,exchange根据 关键字 判定应该将数据发送至指定队列。 type=topic 队列绑定几个模糊的关键字,之后发送者将数据发送到exchange,exchange将传入”路由值“和 ”关键字“进行匹配,匹配成功, 则将数据发送到指定队列。 --------------------------------------------------- 发送者路由值 队列中 old.boy.python old.* -- 不匹配 *表示匹配一个 old.boy.python old.# -- 匹配 #表示匹配0个或多个

珍宝珠 2019-12-02 03:20:34 0 浏览量 回答数 0

回答

CreateQueue 创建队列 控制台、API调用 SetQueueAttributes 设置队列属性 控制台、API调用 GetQueueAttributes 获取队列属性 控制台、API调用 DeleteQueue 删除队列 控制台、API调用 ListQueue 获取队列列表 控制台、API调用 接口 功能描述 支持方式 SendMessage 发送消息 控制台、API调用 BatchSendMessage 批量发送消息 API调用 ReceiveMessage 消费消息 控制台、API调用 BatchReceiveMessage 批量消费消息 API调用 DeleteMessage 删除消息 控制台、API调用 BatchDeleteMessage 批量删除消息 API调用 PeekMessage 查看消息 API调用 BatchPeekMessage 批量查看消息 API调用 ChangeMessageVisibility 修改消息下次可消费时间 API调用 MNS主题模型支持的操作指令如下所示。 接口 功能描述 支持方式 CreateTopic 创建主题 控制台、API调用 SetTopicAttributes 修改主题属性 控制台、API调用 GetTopicAttributes 获取主题属性 控制台、API调用 DeleteTopic 删除主题 控制台、API调用 ListTopic 获取主题列表 控制台、API调用 接口 功能描述 支持方式 Subscribe 创建订阅 控制台、API调用 SetSubscriptionAttributes 修改订阅属性 控制台、API调用 GetSubscriptionAttributes 获取订阅属性 控制台、API调用 Unsubscribe 删除订阅 控制台、API调用 ListSubscriptionByTopic 获取主题的订阅列表 控制台、API调用 接口 功能描述 支持方式 PublishMessage 发布消息 控制台、API调用

保持可爱mmm 2020-03-29 00:06:32 0 浏览量 回答数 0

问题

第一题数据

wishworld 2019-12-01 21:06:00 3294 浏览量 回答数 2

问题

PHP如何使用阿里云消息队列实现短信发送

老鼠数据 2019-12-01 21:09:58 5352 浏览量 回答数 2

问题

收到短信 消息队列 要收费 ,消息队列收费是哪里的消息队列

2019-12-01 18:42:23 575 浏览量 回答数 1

回答

消息队列 和移动推送 的应用场景不一样消息队列是 可以服务与服务之间消息互通,消息的生产和消费。移动推送,是针对移动设备的,比如可以针对某个位置的用户推送,针对某个地区的用户推送等等。而消息队列是需要客户端去主动消费消息。

啊里新人 2019-12-02 01:34:14 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站