我是初学者,我遇到了问题。我无法替换接收器事件中心中的单个消息。有谁知道如何解决这个问题?
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;
}
我试过循环。 e.g。
(int i=0; i<messages.Count(); i++)
也行不通。
答案 0 :(得分:0)
我会在收到消息中的客户数据后,将其下载到天气,并替换天气信息,然后继续发送到流分析。
我不认为这是可能的。您正在使用EventProcessor
处理邮件。这是事件流的结束。从这里你可以对数据做些什么,比如持久化或者其他什么,但是你不能改变/覆盖事件,然后以某种方式神奇地将它们放回到同一个事件中心流中。
实施几乎是不可能的,因为当多个消费者使用不同的消费者群体阅读流时,您如何处理?如果这些消费者处于流中的其他位置该怎么办?
你有一些选择:
Task ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
循环中,像您现在所做的所有消息一样,将它们发送到另一个事件中心,然后该中心又连接到流分析作业。Task ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
循环所有消息,像现在一样,获取天气数据并将其存储到Azure Blob存储。如果你去探索选项2,你可以将blob容器作为输入连接到Stream Analytics Job。