we use Activiti/Spring with spring-integration and AMQP messaging. To start the process we use the second approach on calling runtimeService().startProcessInstanceByKey() to be sure to launch the expected workflow (only one).
So your choice depends on what you like to have... If you have one-2-one relation between message and workflow to be started use the second approach.
When you trigger a message to activity engine (first approach) this can potentially start more than one workflow depending on how your workflows are designed and on what messages they listen. Think of having two workflows listening to the same message. They will both be started. But maybe this is exactly what you want (i don't know).