我们正在尝试在Node应用程序中使用Azure Service Bus.我们的要求是从队列中获取多个消息.
由于Azure SDK for Node不支持批量检索,因此我们决定使用AMQP.虽然我们能够使用Peek Messages获取消息,如此处所述(https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-request-response#message-operations).
我们注意到的是,只要获取消息,它们就会从队列中删除.我想知道是否有人了解我们如何使用AMQP和Node在"PeekLock"模式下获取消息.对于AMQP,我们使用的是amqp10节点包(https://www.npmjs.com/package/amqp10).
这是我们查看邮件的代码:
const AMQPClient = require('amqp10/lib').Client,
Policy = require('amqp10/lib').Policy;
const protocol = 'amqps';
const keyName = 'RootManageSharedAccessKey';
const sasKey = 'My Shared Access Key'
const serviceBusHost = 'account-name.servicebus.windows.net';
const uri = protocol + '://' + encodeURIComponent(keyName) + ':' + encodeURIComponent(sasKey) + '@' + serviceBusHost;
const queueName = 'test1';
var client = new AMQPClient(Policy.ServiceBusQueue);
client.connect(uri)
.then(function () {
return Promise.all([
client.createReceiver(queueName),
client.createSender(queueName)
]);
})
.spread(function(receiver, sender) { …Run Code Online (Sandbox Code Playgroud) 根据cosmosDB图形文档,一个顶点可以具有带有多个值的属性。 https://docs.microsoft.com/zh-cn/azure/cosmos-db/gremlin-support
因此,在添加顶点的过程中,如果我们为一个属性定义了多个值,则会添加它。
假设我的查询是:
g.addV('employee').property('id', 'john').property('country', 'USA').property('country', 'India')
Run Code Online (Sandbox Code Playgroud)
结果是:
[{"id":"john","label":"employee","type":"vertex","properties":{"country":
[{"id":"5dc2aaf6-cb11-4d4a-a2ce-e5fe79d28c80","value":"USA"},
{"id":"fcf4baf6-b4d5-45a3-a4ba-83a859806aef","value":"India"}]}}]
Run Code Online (Sandbox Code Playgroud)
但是在更新顶点时,如果我们更新具有多个值的属性。
查询是:
g.V('john').property('country', 'USA').property('country', 'India').property('country', 'China')
Run Code Online (Sandbox Code Playgroud)
结果是:
[{"id":"john","label":"employee","type":"vertex","properties":{"country":
[{"id":"7e5d9847-31e5-4a59-82f9-b78e744420a1","value":"China"}]}}]
Run Code Online (Sandbox Code Playgroud)
如何用多个值更新此属性?