Sorry for the delay, but I only check out this forum about an hour in the evening my time.
There are several issues here. Let's start with RECEIVE TOP (1). Yes, TOP(1) is the normal thing - you take one message at a time.
As for the pattern, that looks like fire-and-forget and that is not the way to do it. I don't know how often data is written to that table, but if insertions are frequent, it may be worthwhile to reuse conversations.
Anyway, if you are working with Service Broker, you should bookmark Remus Rusanu's blog. He was one of the original developers of Service Broker and his blog is a great resource for Service Broker. Here is a link to his fire-and-forget post: https://rusanu.com/2006/04/06/fire-and-forget-good-for-the-military-but-not-for-service-broker-conversations/ He also have post on how to reuse and recycle connections.
Let's then move over the permissions issue which you resolved by setting the database Trustworthy. You should be aware of that setting a database Trustworthy can be a security risk. If there is a person in the database who is in the db_owner role (or more precisely can create and impersonate users), that person can elevate to be sysadmin if the database is trustworthy.
The alternative is to use certificate signing. This is a general technique which not related to Service Broker as such. The idea is that you can sign a procedure with a certificate. Then you create a login or a user from that certificate, and then you grant that login or user permissions. These permissions are then packaged with the procedure, so that the procedure can perform actions although the calling user do not have these permissions.
In your case, this is required to break out of the sandbox which is set up when a database user is impersonated, which is the case with an activation procedure. To break out of the sandbox, the procedure must have EXECUTE AS OWNER, and be signed with a certificate that has AUTHENTICATE SERVER. Or AUTHENTICATE in the database you want to go to, which is msdb if you want to send mail. (But the error message suggests that you are trying to access a linked server.)
I have written about this in quite some detail. On my web site, I have a longer article, [Packaging Permissions in Stored Procedures] (http://www.sommarskog.se/grantperm.html). That article does not discuss Service Broker, though, but you will need to continue to the appendix where I have a chapter on Service Broker. (And in the appendix, I don't discuss sending mail, neither through Service Broker or directly, but the appendix has some other chapters that may be helpful.)
So, yes, there is quite some material to get through, and I will have to apologise that I did not warn you about the permissions last night. It did not occur to me, but I am certainly well aware of it.