Multiple data streamers

For technical reasons I won’t get into, I’m sometimes experiencing the error “Cannot Initialize Streamer that is already in use”

I’m investigating the exact cause of this and how I can change my architecture to alleviate it but I did have one question.

Is there any downside to having multiple data streamers?

At present, whilst I have multiple services and multiple data adapters for each of them, they’re all using a single data streamer component. If I were to create a dedicated data streamer component for each data adapter, would this be problematic or inadvisable in any way?

At present I’m not even sure if this would help but I thought I’d ask in case it’s a blind alley anyway.


data streamer isn’t thread-safe component so we recommend to have personal data streamer for each thread.

Note: RDA uses internal bin2 data streamer if RDA.DataStreamer isn’t assigned.

Ah ok, sounds like I’ve been doing it completely wrong then. I just have a single Bin2DataStreamer component for my entire client application. Seems I’ve just “gotten away with it” until now.

I did notice that, if I remove my component from the DataStreamer property of my data adapters, it reverts to an InternalDataStreamer property, which I presume is what you’re referring to.

If I did this, I’m guessing that would mean each instance of that data adapter would create its own internal data streamer. If so then that would obviously be an improvement but, if two threads both tried to use the same data adapter at the same time, I could potentially still have problems.

Is the only genuinely safe way to create separate instances of my data adapters and data streamers as required so they can never be re-used by separate threads simultaneously?


yes, you can