design patterns – Do I need a Message processing service before RabbitMQ (or any othe message broker)

I hope that’s a proper place to ask my question.

I am wondering how is best to integrate RabbitMq (or any other message broker) into my project.

There are 2 options:

  1. Simply collect all messages, whatever comes from my other services and dump all into Rabbit

Option1

  1. Collect messages into intermediate service, to ensure “contract”, which will then forward them to rabbit in some particular form

Option2

While first option seems to be native, it may (?) create problems, if we try later to switch from Rabbit to smth else, like Kafka (or not?), the second seems to defeat Rabbits purpose.

What do you guys think?