我正在使用Azure Service Bus SubscriptionClient.OnMessage方法; 配置为同时处理多达5个消息.
在代码中,我需要等待所有消息完成处理才能继续(正确关闭Azure Worker角色).我该怎么做呢?
SubscriptionClient.Close()会阻塞,直到所有消息都完成处理?
我正在寻找一个解决几个内部部署数据库之间的实时数据集成的解决方案.所涉及的数据没有太多变化.我正在评估各种可用的ESB.我认为使用Azure Service Bus进行数据集成可以快速开发解决方案.是否建议使用Azure服务总线来集成所有内部部署数据库?
我一直在寻找新发布的Windows服务器,NServicebus和Mule ESB之间的比较.要求是使用发布者/订阅者通信模式开发基于.NET的实时数据集成解决方案.
想法是通过servicebus传输protobuf序列化数据消息.但是,如果任何这些支持文件传输也会很好,因为我们有不同的卷和各种数据源.我不确定哪一个是更好的选择.
如果事件/消息的生产者和消费者都是基于.Net/C#的,我倾向于在有效载荷中使用元数据,以便能够将数据反序列化为C#POCO,如下所示:
Data
{
"X": {
"a": "bb811ea5-6993-e511-80fc-1458d043a750",
"b": "ddd",
"b": "dddd",
"d": true
}
"x1": 1.1234,
"x2": 2.3456,
"EventUtcDateTime": "2016-02-16T08:55:38.5103574Z"
}
Metadata
{
"TimeStamp": "02/16/2016 08:55:37",
"EventClrTypeName": "Bla.Di.Bla.SomeClass, Bla.Di.Bla, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
Run Code Online (Sandbox Code Playgroud)
在生产者不是基于.Net/C#的情况下,什么是一个好的解决方案?
我是Azure逻辑应用程序的新手.我有一个服务总线并将json对象消息传递给该服务总线,然后我在逻辑应用程序中设置一个动作来收听我的服务总线.因此,每当有新消息进入该服务总线时,我的逻辑应用程序就会接收它
并将其发送到http.
我的问题是如何从服务总线中的消息中获取属性并将其传递给我的http操作.我试过这个
“Id” : “@{json(triggerBody()[‘ContentData’]).id}”
Run Code Online (Sandbox Code Playgroud)
但它不起作用
我正在使用azure服务总线主题和订阅机制,并希望处理所有死信队列中的消息。
此外,我想通过C#中的Azure Web作业处理消息,并将其发送回队列。所以我想知道如何通过我的应用程序处理死信队列上的消息?
因此,我试图了解服务总线的时间安排...特别是锁如何工作。我们可以选择手动调用CompleteAsync。处理也可能需要一些时间。在这些情况下,我们要确保我们不会不必要MessageLockLostException。
似乎有几个数字与之相关:
假设处理运行了大约2分钟,然后成功或失败(暂时不影响哪种情况)。假设这是正常情况,因此这意味着处理每条消息大约需要2分钟。
此外,这确实是一个队列,而不是主题。而我们只有一个消费者认为asynchronoulsy流程与信息MaxConcurrentCalls设置为100。我们正在使用的OnMessageAsync有ReceiveMode.PeekLock。
现在,我的设置应该是一个单一的使用者,以可靠地处理所有消息?
我认为将Lock的持续时间设置为1分钟就可以了,因为这是默认设置,为了安全起见,我将AutoRenewTimeout设置为5分钟,因为据我所知,该值应该是处理消息所需的最长时间(根据此答案至少)。性能对于这个系统不是很关键,所以我很共鸣,因为只要我们没有收到LockedException,就可以将消息锁定一些不必要的1分钟,2分钟或3分钟并不是一件坏事,因为这些没有任何实际价值。
我是服务总线的新手,无法解决这个问题.
基本上我正在使用挂在服务总线队列上的Azure功能应用程序.假设从服务总线触发了一个触发器,我从队列中收到一条消息,并且在处理该消息时,我的代码中出现了问题.在这种情况下,我如何确保再次将该消息放回队列中?目前它只是消失在空气中,当我在VS上重新启动我的功能应用程序时,将从队列中获取下一条消息.
理想情况下,只有当我完成所有数据处理并且当我点击myMsg.Success()时,我是否希望将其从队列中删除.
public static async Task RunAsync([ServiceBusTrigger("xx", "yy", AccessRights.Manage)]BrokeredMessage mySbMsg, TraceWriter log)
{
try{ // do something with mySbMsg }
catch{ // put that mySbMsg back in the queue so it doesn't disappear. and throw exception}
}
Run Code Online (Sandbox Code Playgroud)
我正在阅读mySbMsg.Abandon(),但它看起来像将消息放入死信队列中,我不知道如何访问它?如果有更好的错误处理方法?
c# azure azureservicebus azure-servicebus-queues azure-functions
我有一个问题,创建一个Azure Function与Queue Trigger在.NET 2.0的核心.
在microservice体系结构中,当在队列中创建用于创建用户的新消息时,服务必须接收此消息并基于其中的信息在数据库中创建用户.
在Visual Studio 2017中,我创建了一个新项目Azure Function.
从我选择的新模板Queue Trigger.
此屏幕不同于有关此主题的Microsoft帖子.无论如何,第一个问题是什么Connection和是什么Path.
我创建了一个Service Bus,我有自己的凭证Azure Portal.我复制了Primary Connection String并且Path是我队列的名字.
如果我运行该项目,我会收到很多错误.我发现这个链接Azure Documentation是一个简单的触发器.在这个例子中,他们使用ServiceBusTrigger而不是QueueTrigger.为了解决问题ServiceBusTrigger,我Microsoft.Azure.WebJobs.ServiceBus从Nuget 补充道.它似乎不起作用.
为了获得正确的凭证Azure Function,我创建了一个Azure Portal并下载了app content.
看起来像
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_EXTENSION_VERSION": "beta",
"ScmType": "None",
"WEBSITE_AUTH_ENABLED": …Run Code Online (Sandbox Code Playgroud) 我正在使用Azure函数,并尝试设置管道和筛选器(模式)的复杂构造。我为此使用Azure函数。
我的起点是HTTP触发的Azure函数。这将从请求的主体中收集一些JSON,并将此消息传递给Azure服务总线。
我必须在这里丢失一些东西(我之前在RabbitMQ中已经使用控制台应用程序完成过此操作),但是我如何从HTTP触发的Azure函数将消息发布到服务总线。
我发现了一些有关配置我的function.json的参考(无论如何-我在Visual Studio中构建)。
输入/输出(触发/绑定)如何工作-我想这是这里的问题...或?
我已经有了我的第一个Azure函数,并且正在从HTTP接收数据-到目前为止一切顺利。但是如何进行?
**更新**仍然无法使其正常工作。收到此代码,它失败并显示http500。(它还说我需要查看og-该日志在哪里?)
public static class EI_WooCommerce_Hub
{
[FunctionName("EI_WooCommerce_Hub")]
[return: ServiceBus("eilogging", Connection = "EIIntegrationServiceBusConnection")]
public async static Task<string> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "EIWooCommerceHub/name/")]HttpRequestMessage req, TraceWriter log)
{
log.Info("Webhook triggered from: ");
return "Hello World to queue";
}
}
Run Code Online (Sandbox Code Playgroud)
** Update 2 **这似乎是一个配置问题。在功能应用程序的应用程序设置中,我不断收到服务总线的授权错误。我用连接字符串添加了默认的“ AzureWebJobsServiceBus”设置,然后它起作用了。由于某种原因,它无法获取我自己的连接字符串。
azureservicebus ×10
azure ×9
c# ×3
.net-core ×1
biztalk ×1
biztalk-2010 ×1
esb ×1
mule ×1
nservicebus ×1
servicebus ×1