Event Streams Thoughts and Questions

I really like the idea of the event streams module. Just barely cobbled together a tag event stream from a UDT instance a log in a data base (much like a transaction group but cleaner IMO). I have so much more to learn with this new feature.

I wanted to see who else out there is playing with event streams. What are you building /thinking of building with it?

Next I’m gonna try out a “tags to Kafka” stream for certain UDTs as a way of logging domain events. I really like this compared to MQTT’s inability to retain historical messages.

Some improvement ideas I have:

  • support for wild cards in tag paths list for tag events. It would be amazing to not have to statically configure the paths.
  • ability to subscribe to at UDT type: imagine if I could create an event stream that was triggered any time a UDT instance of a certain type had a tag event. That would be huge
  • Integration with MQTT Engine, ability to set subscriptions like a regular MQTT client and MQTT as a sync. Plus encoders SpB / protobuf
  • Protobuf / avro encoding on Kafka messages
  • Examples built into quick start showing event streams use cases
3 Likes

Second wildcards and UDTs and MQTT!

3 Likes

I agree with the tag path wildcards - especially if they could be used in the middle of paths. For example, if I had a Motors folder spread across multiple production line folders.

UDT integration with event streams would be massive. That's something that isn't possible with transaction groups, and having this feature would be incredible.

1 Like

I haven't had the chance to play it with yet (waiting on our system egineer to set up the beta) but I'm hoping to integrate it with RabbitMQ at some point in the future. Over the last couple of years we've hacked together a system that's based on the RabbitMQ Java client library, which works for our purposes, but it'd be nice if it could be properly integrated with these event streams.

1 Like

I've only scratched the surface on Event Streams so far but I am definitely going to be listening closely at ICC this year as they talk about them. I think you've nailed some of the use cases for them and I feel like they are designed to be flexible to build whatever you have in mind.

2 Likes

I did find an answer to my MQTT question in another thread

So I hope we'll see it one day. Hopefully Cirrus Link is on it.

I guess that's what happens when MQTT is implemented by a partner and not first party.

Still excited to see it none the less.

That thread I linked in my last comment, Kevin Herron mentioned that the Streams Module is extensible via the SDK.

Not sure if you wrote your own module for RabbitMQ but sounds like it'd be the same route to add it to Event Streams.

Cirrus Link just announced Event Streams support in their updated modules

5 Likes

Reusing the thread for Even Streams Questions:

  1. There is the following known ‘issue’ with Event Streams, that Records can be lost from a buffer when an event stream is saved or disabled​. Is this something which should eventually be fixed, so that the data in a buffer is not lost or does this work as intentended.
  2. Is there some documentation available for redundant gateways and event streams? Is this supported an if, does is also copy the buffer to the redundant gateway?

Maybe I missed something, but how is Event Streams useful for the Source “Tag Event” :upside_down_face: :

The documention Source Data and Metadata | Ignition User Manual says that there is no extractable data for the Source “Tag Event”, but Metadata, which is provided by the user.

  1. Does this mean, that there is no way to get the value for a Tag Event Source?
  2. How can the user define Metadata for a Tag Event?

Tag Event

Event Object - Data

There is no extractable Tag Event event object data.

Event Object - Metadata

There is no pre-existing extractable Tag Event event object data, as this is provided by the user.

I think the docs are wrong. The event data should be the tag value, and the metadata should have two properties: tagPath and isInitial.

1 Like

That work. Thank you!

  • event.data returns a json with value, quality and timestamp
  • event.metadata returns a json with tagPath and isInitial

I've been testing the Event Streams with the MQTT source (8.3 beta 4). I cant find any way to store the topic in the database? Payload is in the {event.data}, but is the topic avaliable? It seems the {event.metadata} is empty. The topic needs to be included in the event object!

It would also be nice to create column type JSON when using Postgres database (to store the raw payload)