I'd first start out by running the scripts in your sample with SSMS. There is quite a bit to get the service broker up and running in sql, so you'll want to make sure it's set up on your sql server instance before you attempt to programmatically attempt to use it.

Any reason you are using sqlexecdirect rather something object oriented and more modern?