# Run nameko service with multiple names (Multiple queues)

**URL:** <https://discourse.nameko.io/t/run-nameko-service-with-multiple-names-multiple-queues/212>\
**Category:** googlegroup\
**Created:** [October 19, 2017, 2:05pm UTC](https://discourse.nameko.io/t/run-nameko-service-with-multiple-names-multiple-queues/212 "2017-10-19T14:05:59Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Msd86911](https://avatars.discourse-cdn.com/v4/letter/m/c68b51/32.png) [@Msd86911](https://discourse.nameko.io/u/Msd86911)\
**Post date:** [October 19, 2017, 2:05pm UTC](https://discourse.nameko.io/t/run-nameko-service-with-multiple-names-multiple-queues/212/1 "2017-10-19T14:05:59Z")

</div>

Is there is a way to run single service class multiple times with different  
names and get service name inside called class function.  
\* class MessageService:\*  
\* @rpc\*  
\* def message(self, message):\*  
\* return self.name\*  
\*class TestRunner:\*  
\* MessageService.name="service\_1"\*  
\* self.runner.add\_service(MessageService)\*  
\* MessageService.name="service\_2"\*  
\* self.runner.add\_service(MessageService)\*  
\*.....\*

Above code achieved running single service multiple times but I can't get  
service name inside message function (both service queues return \*service\_1\*

Best Regards,  
Mahmoud Seif-eldin

---

<div class="post-metadata">

**Author:** ![mattbennett](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.nameko.io/mattbennett/32/13_2.png) [@mattbennett](https://discourse.nameko.io/u/mattbennett)\
**Post date:** [October 20, 2017, 12:17am UTC](https://discourse.nameko.io/t/run-nameko-service-with-multiple-names-multiple-queues/212/2 "2017-10-20T00:17:08Z")

</div>

You can do this with inheritance.

# msg.py

class MessageService:

&nbsp;&nbsp;&nbsp;&nbsp;@rpc  
&nbsp;&nbsp;&nbsp;&nbsp;def message(self):  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return self.name

class MessageServiceA(MessageService):  
&nbsp;&nbsp;&nbsp;&nbsp;name = 'a'

class MessageServiceB(MessageService):  
&nbsp;&nbsp;&nbsp;&nbsp;name = 'b'

Note that to run the services you have to explicitly select just the  
subclasses (i.e. "nameko run msg:MessageServiceA msg:MessageServiceB")  
otherwise the runner will try to run the base class too and complain about  
a missing name attribute.

> **···**
>
> On Thursday, October 19, 2017 at 3:05:59 PM UTC+1, msd8...@gmail.com wrote:
> 
> > Is there is a way to run single service class multiple times with  
> > different names and get service name inside called class function.  
> > \* class MessageService:\*  
> > \* @rpc\*  
> > \* def message(self, message):\*  
> > \* return self.name \<[http://self.name](http://self.name)\>\*  
> > \*class TestRunner:\*  
> > \* MessageService.name="service\_1"\*  
> > \* self.runner.add\_service(MessageService)\*  
> > \* MessageService.name="service\_2"\*  
> > \* self.runner.add\_service(MessageService)\*  
> > \*.....\*
> > 
> > Above code achieved running single service multiple times but I can't get  
> > service name inside message function (both service queues return  
> > \*service\_1\*
> > 
> > Best Regards,  
> > Mahmoud Seif-eldin

---

<div class="post-metadata">

**Author:** ![Msd86911](https://avatars.discourse-cdn.com/v4/letter/m/c68b51/32.png) [@Msd86911](https://discourse.nameko.io/u/Msd86911)\
**Post date:** [October 20, 2017, 4:36am UTC](https://discourse.nameko.io/t/run-nameko-service-with-multiple-names-multiple-queues/212/3 "2017-10-20T04:36:44Z")

</div>

It is working perfectly, Thanks for your help 🙂

> **···**
>
> On Thursday, 19 October 2017 16:05:59 UTC+2, msd8...@gmail.com wrote:
> 
> > Is there is a way to run single service class multiple times with  
> > different names and get service name inside called class function.  
> > \* class MessageService:\*  
> > \* @rpc\*  
> > \* def message(self, message):\*  
> > \* return self.name \<[http://self.name](http://self.name)\>\*  
> > \*class TestRunner:\*  
> > \* MessageService.name="service\_1"\*  
> > \* self.runner.add\_service(MessageService)\*  
> > \* MessageService.name="service\_2"\*  
> > \* self.runner.add\_service(MessageService)\*  
> > \*.....\*
> > 
> > Above code achieved running single service multiple times but I can't get  
> > service name inside message function (both service queues return  
> > \*service\_1\*
> > 
> > Best Regards,  
> > Mahmoud Seif-eldin
