As we all know, IDM is a 'single-threaded' technology, and as such, utilization of a generic IDM Connector (non 'fan-out') cannot really 'fan-out'. The problem exists that, whilst fanning-out events, if a particular end-system is unavailable, more-often-than-not then all events following the current event will be 'stuck'.
The problem arises that if an event A to Host A does not complete because Host A is unavailable, how does event event B to Host B complete in a timely manner, and at the same time event A to Host A is retried until it is processed successfully? What happens with all subsequent events to Host A while Host A is unavailable?
The following steps might make it easier to understand how one might solve the issue. By utilizing the Generic Loopback Connector and the WorkOrder Connector it might just be possible to build a transaction-oriented system.
The Generic Loopback Connector contains ECMAScript which does a 'port ping' to a host, with a port, and a timeout.
That's the first bit done
It is, therefore possible, the build a 'fan-out' scenario with built-in logic to ensure transaction consistency if an end-system is down...even with the single-threaded nature of IDM.