Event producers and event sinks are very often services written in an Object Oriented language. All the same OO rules apply. OO Design Patterns are still applicable.
This is a pretty minor point, but I have seen a lot of people throw this stuff out the window with EDA/SOA.
In my opinion, services (i.e., event producers & sinks) should have good separation of:
- service handler (should have minimal code - just delegates to message mapping and business logic)
- message mapping (e.g., O/X)
- business logic
- domain model
- data access layer
An aside I'll add is that the Spring Framework also works just fine for Java based services. I only mention it because I have found that its usage tends to have a positive affect on the OO design of services.