我从使用 .Net Core 的事件中心开始,在尝试编写与官方 MS 文档中相同的代码时遇到一个非常特殊的问题(https://learn.microsoft.com/en-us/azure/event- hubs/get-started-dotnet-standard-send-v2)。尽管我使用的事件接收器代码包含命名空间(即 Azure.Messaging.EventHubs),但它会引发错误。我这里哪里出错了?
我正在尝试使用 PySpark 从 EventHub 读取事件流。我在将起始位置设置为流的开头时遇到问题。在 Scala 中很清楚,但对于 Python 我不断得到:
org.json4s.package$MappingException: No usable value for offset.
Run Code Online (Sandbox Code Playgroud)
这是我的配置。
conf = {
"eventhubs.connectionString":
"Endpoint=sb://XXXX;SharedAccessKeyName=XXX;SharedAccessKey=XXXX;EntityPath=XXXX",
"eventhubs.consumerGroup": "$Default",
"eventhubs.startingPosition": "-1"
}
Run Code Online (Sandbox Code Playgroud) 当我们查看默认的 Azure 事件中心时,Event Hub Namespaces
我们可以Event Hubs
在这些命名空间中进行创建。在Apache Kafka
你有Topics
.
与an 内的Topic
an 相同吗?Event Hub
Event Hub Namespace
从官方文档来看,他们只支持批量发送。只是想知道是否存在某些东西(当然除了作为列表发送一个之外)
我正在尝试使用 Azure CLI 获取物联网中心中存在的“事件中心兼容终结点”的连接字符串。有没有命令可以获取连接字符串信息?
当我们有事件中心(或任何消息服务)的多个使用者时,如何确保没有消息被处理两次,特别是在使用者自动扩展到多个实例的情况下?
我知道我们可以跟踪最后处理的消息,但话又说回来,在检查消息是否已处理和实际处理之间,其他实例已经可以处理它(竞争条件?。
那么,如何以可扩展的方式解决这个问题呢?
[更新] 我知道建议至少拥有与消费者一样多的分区,但是如果单个消费者无法处理定向到它的消息但需要扩展到多个实例,该怎么办?
刚刚完成MVA"Azure流分析实践"课程之一.但不知怎的,它不清楚这个概念,事件中心如何存储数据或者它存储数据的位置,无论是BLOB Store还是Data lake,或者我们可以改变这种类型的商店.
我正在使用 azure 事件中心 python SDK 通过此链接向事件中心发送和接收消息。https://github.com/Azure/azure-event-hubs-python/tree/develop。我可以成功发送和接收消息。但是我如何解析消息并从事件数据对象中检索数据。请找到下面的代码。
import os
import sys
#import logging
from azure.eventhub import EventHubClient, Receiver, Offset
ADDRESS = 'sb://####.servicebus.windows.net/#####'
USER = '##########'
KEY = '##################################'
CONSUMER_GROUP = "$default"
OFFSET = Offset("-1")
PARTITION = "1"
total = 0
last_sn = -1
last_offset = "-1"
try:
if not ADDRESS:
raise ValueError("No EventHubs URL supplied.")
client = EventHubClient(ADDRESS, debug=False, username=USER, password=KEY)
receiver = client.add_receiver(CONSUMER_GROUP, PARTITION, prefetch=5000,
offset=OFFSET)
client.run()
try:
batched_events = receiver.receive(timeout=20)
except:
raise
finally:
client.stop()
for event_data in …
Run Code Online (Sandbox Code Playgroud) 我们知道可以从local.setting.json文件使用事件中心的Connection字符串。因此,对于不同环境中的同一功能应用程序,我可以在azure门户的“应用程序设置”中添加事件中心连接字符串设置。
由于EventHubTrigger函数应用程序还将事件名称和使用者组(可选)用作属性参数,我想知道如何从应用程序设置中使用事件中心名称和使用者组?
public static void EventHubTriggerFunc([EventHubTrigger("myeventhubname", Connection = "EventHubConnectionAppSetting", ConsumerGroup = "myconsumergroupname")] EventData myEventHubMessage, DateTime enqueuedTimeUtc, Int64 sequenceNumber, string offset, ILogger log)
{
// Here EventHubConnectionAppSetting is specified in local.setting.json file
//myeventhubname & myconsumergroupname are hard coded string
}
Run Code Online (Sandbox Code Playgroud)
本地设置
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"EventHubConnectionAppSetting": "Endpoint=.....",
"EventHubConsumerGroup": "myconsumergroup"
}
}
Run Code Online (Sandbox Code Playgroud) azure ×7
python ×2
.net-core ×1
apache-kafka ×1
apache-spark ×1
azure-cli ×1
c# ×1
c#-4.0 ×1
concurrency ×1
endpoint ×1
pyspark ×1