我是一个初学者,我有一个问题。我无法替换接收者事件中心中的单个消息。有谁知道如何解决这个问题?
public Task ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
{
try
{
foreach (EventData message in messages)
{
string data = Encoding.UTF8.GetString(message.GetBytes());
NewClient Client = JsonConvert.DeserializeObject<NewClient>(data);
GPSApi Gpsobject = new GPSApi();
Gpsobject.GetJson(Client.City, Client.Street);
Gpsobject.DeserializeJson();
Gpsobject.ConvertJson();
WeatherApi WeatherApiobject = new WeatherApi();
WeatherApiobject.GetJson(Gpsobject.convertlat, Gpsobject.convertlng);
data = WeatherApiobject.sendEvent;
EventData data1 = new EventData(Encoding.UTF8.GetBytes(data));
//message = data1;
// LUB TUTAJ
Interlocked.Increment(ref this.totalMessages);
this.LastMessageOffset = data1.Offset;
}
我尝试过循环。例如
(int i=0; i<messages.Count(); i++)
也不起作用。
最佳答案
I would after receiving customer data in the message, then download it to the weather, and replace the message of the weather, which continue to be sent to the stream analytics.
我认为这是不可能的。您正在使用 EventProcessor
处理消息。这就是事件流的末尾。从这里,您可以对数据执行某些操作,例如保留数据或其他任何操作,但您无法更改/覆盖事件,然后以某种方式神奇地将它们放回同一事件中心流中。
这几乎是不可能实现的,因为当多个消费者使用不同的消费者组读取流时,你该如何处理,以及如果这些消费者位于流中的其他位置该怎么办?
不过你有一些选择:
- 在
Task ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
像现在一样循环所有消息并将它们发送到另一个事件中心,然后该事件中心又连接到流分析作业。 - 使用
Task ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
像现在一样循环所有消息,获取天气数据并将其存储到 Azure Blob 存储。
如果您探索选项 2,您可以将 blob 容器作为输入连接到流分析作业。
关于c# - 如何在接收器事件中心编辑 EvenData 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39905849/