当前位置:首页 » 城管服务 » 队列服务

队列服务

发布时间: 2020-12-08 13:47:50

1. 消息服务和消息队列有何区别

消息来队列:用于消息,不自是简单的数据信息传递,消息队列还包括消息有优先级、消息到达通知等丰富内容。
管道:低级的通信机制,消息队列比管道高级多了,管道分pipe和fifo,pipe是无名的,所以只能在进程内或父子进程间通信,fifo可任何两个进程间通信了。不过这两个依然比较低级,完成高级的应用服务器还需要消息队列等。

2. 如何应用.NET中的消息队列服务

直接在代码中写代码就行了~

3. 如何设置用户的默认队列和服务的信息

若要执行存储操作,您需要一个 Windows Azure 存储帐户。可通过以下步骤创建存储帐户。(也可以使用 REST API 创建存储帐户。)

登录到 Windows Azure 管理门户。

在导航窗格的底部,单击“新建”。

+新建

依次单击“数据服务”、“存储”和“快速创建”。

“快速创建”对话框

在 URL 中,键入要在存储帐户的 URI 中使用的子域名称。输入的名称可包含 3-24 个小写字母和数字。此值将成为用于对订阅的 Blob、队列或表资源进行寻址的 URI 中的主机名。

选择要在其中查找存储的区域/地缘组。如果要使用 Windows Azure 应用程序中的存储,请选择要在其中部署该应用程序的区域。

还可以选择启用异地复制。

单击“创建存储帐户”。

创建 Java 应用程序

在本指南中,您将使用存储功能,这些功能可在 Java 应用程序中本地运行,或在 Windows Azure 的 Web 角色或辅助角色中运行的代码中运行。假定您已下载并安装 Java 开发工具包 (JDK),并已按照下载 Windows Azure SDK for Java 中的说明进行操作来安装 Windows Azure Libraries for Java 和 Windows Azure SDK,还在 Windows Azure 订阅中创建了 Windows Azure 存储帐户。您可以使用任何开发工具(包括“记事本”)创建应用程序。您只要能够编译 Java 项目和引用 Windows Azure Libraries for Java 即可。

配置您的应用程序以访问队列存储

将下列导入语句添加到要在其中使用 Windows Azure 存储 API 以访问队列的 Java 文件的顶部:

// Include the following imports to use queue APIs
import com.microsoft.windowsazure.services.core.storage.*;
import com.microsoft.windowsazure.services.queue.client.*;
设置 Windows Azure 存储连接字符串

Windows Azure 存储客户端使用存储连接字符串来存储用于访问数据管理服务的终结点和凭据。在客户端应用程序中运行时,必须提供以下格式的存储连接字符串,并对 AccountName 和 AccountKey 值使用管理门户中列出的存储帐户的名称和存储帐户的主访问密钥。此示例演示如何声明用于保存连接字符串的静态字段:

// Define the connection-string with your values
public static final String storageConnectionString =
"DefaultEndpointsProtocol=http;" +
"AccountName=your_storage_account;" +
"AccountKey=your_storage_account_key";
在 Windows Azure 的角色中运行的应用程序中,此字符串可存储在服务配置文件 ServiceConfiguration.cscfg 中,并可通过调用 RoleEnvironment.getConfigurationSettings 方法进行访问。下面是从服务配置文件中名为 StorageConnectionString 的 Setting 元素中获取连接字符串的示例:

// Retrieve storage account from connection-string
String storageConnectionString =
RoleEnvironment.getConfigurationSettings().get("StorageConnectionString");
如何:创建队列

利用 CloudQueueClient 对象,可以获得队列的引用对象。以下代码将创建 CloudQueueClient 对象。

本指南中的所有代码都使用声明了上述两种方式之一的存储连接字符串。还可以通过其他方式创建 CloudStorageAccount 对象。有关详细信息,请参阅 Javadocs 文档中的 CloudStorageAccount。

// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);

// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
使用 CloudQueueClient 对象获取对要使用的队列的引用。如果队列不存在,您可以创建它。

// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference("myqueue");

// Create the queue if it doesn't already exist
queue.createIfNotExist();
如何:向队列添加消息

若要将消息插入现有队列,请先创建一条新的 CloudQueueMessage。紧接着,调用 addMessage 方法。可从字符串(UTF-8 格式)或字节数组创建 CloudQueueMessage。以下代码将创建队列(如果队列不存在)并插入消息“Hello, World”。

// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);

// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();

// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference("myqueue");

// Create the queue if it doesn't already exist
queue.createIfNotExist();

// Create a message and add it to the queue
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
queue.addMessage(message);
如何:查看下一条消息

通过调用 peekMessage,可以查看队列前面的消息,而不必从队列中将其删除。

// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);

// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();

// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference("myqueue");

// Peek at the next message
CloudQueueMessage peekedMessage = queue.peekMessage();
如何:取消对下一条消息的排队

您的代码通过两个步骤取消在队列中对消息的排队。在调用 retrieveMessage 时,您将获得队列中的下一条消息。从 retrieveMessage 返回的消息变得对从此队列读取消息的任何其他代码不可见。默认情况下,此消息将持续 30 秒不可见。若要完全从队列中删除消息,您还必须调用 deleteMessage。此删除消息的两步过程可确保当您的代码因硬件或软件故障而无法处理消息时,您的其他代码实例可以获取同一消息并重试。您的代码在处理消息后会立即调用 deleteMessage。

// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);

// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();

// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference("myqueue");

// Retrieve the first visible message in the queue
CloudQueueMessage retrievedMessage = queue.retrieveMessage();

// Process the message in less than 30 seconds, and then delete the message.
queue.deleteMessage(retrievedMessage);
如何:更改已排队消息的内容

您可以更改队列中已就位消息的内容。如果消息表示工作任务,则可以使用此功能更新工作任务的状态。以下代码使用新内容更新队列消息,并将可见性超时设置为再延长 60 秒。这将保存与消息关联的工作的状态,并额外为客户端提供一分钟的时间来继续处理消息。可使用此方法跟踪队列消息上的多步骤工作流,即使处理步骤因硬件或软件故障而失败,也无需从头开始操作。通常,您还可以保留重试计数,如果某条消息的重试次数超过 n 次,您将删除此消息。这可避免消息在每次处理时都触发应用程序错误。

// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);

// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();

// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference("myqueue");

// Retrieve the first visible message in the queue
CloudQueueMessage message = queue.retrieveMessage();

// Modify the message content and set it to be visible in 60 seconds
message.setMessageContent("Updated contents.");
EnumSet<MessageUpdateFields> updateFields =
EnumSet.of(MessageUpdateFields.CONTENT, MessageUpdateFields.VISIBILITY);
queue.updateMessage(message, 60, updateFields, null, null);
用于对消息取消排队的其他方法

您可以通过两种方式自定义队列中的消息检索。首先,您可以获取一批消息(最多 32 个)。其次,您可以设置更长或更短的不可见超时,从而允许您的代码使用更多或更少的时间来彻底处理每条消息。

以下代码示例使用 retrieveMessages 方法通过一次调用获取 20 条消息。然后,它使用 for 循环来处理每条消息。它还将每条消息的不可见超时设置为五分钟(300 秒)。请注意,这五分钟超时对于所有消息都是同时开始的,因此在调用 retrieveMessages 五分钟后,尚未删除的任何消息都将再次变得可见。

// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);

// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();

// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference("myqueue");

// Retrieve 20 messages from the queue with a visibility timeout of 300 seconds
for (CloudQueueMessage message : queue.retrieveMessages(20, 300, null, null)) {
// Do processing for all messages in less than 5 minutes,
// deleting each message after processing.
queue.deleteMessage(message);
}
如何:获取队列长度

您可以获得队列中消息的估计数。downloadAttributes 方法会询问队列服务一些当前值,包括队列中消息的计数。此计数仅为近似值,因为只能在队列服务响应您的请求后添加或删除消息。getApproximateMethodCount 方法返回通过调用 downloadAttributes 检索到的最后一个值,而不会调用队列服务。

// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);

// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();

// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference("myqueue");

// Download the approximate message count from the server
queue.downloadAttributes();

// Retrieve the newly cached approximate message count
long cachedMessageCount = queue.getApproximateMessageCount();
如何:删除队列

若要删除队列及其包含的所有消息,请对队列对象调用 delete 方法。

// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);

// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();

// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference("myqueue");

// Delete the queue
queue.delete();

4. redis mq 队列服务解决什么问题

1. redis中保存的是数组(序列化),绝对不要保存SQL,保存SQL的方法很蛋疼 保存数组是为了数据库安全版(万一sql语句权有错误,任务就直接失败了),灵活度和兼容性

2.服务器后台作一个shell脚本,死循环,不断从队列中取数据,进行处理.如次反复,如果没有数据,也立即尝试取数据---不要担心性能问题,后台单并发请求,不会造成性能问题

3.因为队列中保存的是数组,不存在这个问题

5. win10开机自启系统消息队列服务可不可以禁止

可以关闭的,你也可以在管理Windows功能哪里将它禁用就可以了,不影响电脑运作的。

6. 消息服务和消息队列有何区别

消息队列(Message Queue)是基于高可用分布式集群技术,搭建了包括发布订阅、接回入、管理、答监控报警等一套完整的高性能消息云服务。
消息通知服务(Message and Notification Service)是一种高效、可靠、安全、便捷、可弹性扩展的分布式消息服务。

7. 如何应用.NET中的消息队列服务

建立一个队列是应用的第一步。您可以通过Windows计算机管理控制台中的消息队列选项完成这一操作,或者自己编程建立一个队列。列表A中的C#代码建立了一个新的私有MSMQ消息队列(如果不存在队列),并同时创建一条消息。
代码应用MessageQueue类的Exists方法来确定是否存在一个名为TechRepublic的私有队列。如存在,它用现有队列示例这个MessageQueue对象;否则,就建立一个新队列。 新的Message对象用来向队列发送一条消息。它的Label属性指定在MSMQ控制台中显示的消息标题,其主体包含存放在队列上的项目内容。在这种情况下,我只发送文本,但您能够使用任何类型的对象。MessageQueue类的Send方法向队列发送消息。列表B中是对应的VB.NET代码。 下一步即从队列中读取消息。这是一个简单的过程,应用MessageQueue类的Receive方法即可。如果队列中存在消息,Receive方法就返回一个消息对象;否则,它等待一条消息出现(您可以设置一个时间期限)。从队列中恢复对象需要预先知道它的类型。 MessageQueue类的Formatter属性允许您轻松指定被恢复对象的类型。下面的简单例子仅使用文本,所以它应用System.String。在列表C中,C#代码从测试队列中读取消息。 提交给Receive方法的TimeSpan对象指定异常出现时系统的等待时间。接下来设置这个例子中的Formatter方法,对象被转换成字符串读取前面存储的文本。Receive方法从队列中读取消息,它的值显示在控制台中。在try块的最后部分,队列关闭。 轻松应用消息 MSMQ组合Windows和.NET的System.Messaging命名空间,使您可以方便地在.NET应用程序中利用消息。消息提供一种在企业应用程序中异步发送并接收消息(数据)的强大工具。

热点内容
影视转载限制分钟 发布:2024-08-19 09:13:14 浏览:319
韩国电影伤口上纹身找心里辅导 发布:2024-08-19 09:07:27 浏览:156
韩国电影集合3小时 发布:2024-08-19 08:36:11 浏览:783
有母乳场景的电影 发布:2024-08-19 08:32:55 浏览:451
我准备再看一场电影英语 发布:2024-08-19 08:14:08 浏览:996
奥迪a8电影叫什么三个女救人 发布:2024-08-19 07:56:14 浏览:513
邱淑芬风月片全部 发布:2024-08-19 07:53:22 浏览:341
善良妈妈的朋友李采潭 发布:2024-08-19 07:33:09 浏览:760
哪里还可以看查理九世 发布:2024-08-19 07:29:07 浏览:143
看电影需要多少帧数 发布:2024-08-19 07:23:14 浏览:121