# How to listen to a ZMQ subscriber in the separate thread or in parallel?

**URL:** <https://discourse.julialang.org/t/how-to-listen-to-a-zmq-subscriber-in-the-separate-thread-or-in-parallel/2884>\
**Category:** General Usage\
**Tags:** question\
**Created:** [March 26, 2017, 7:28am UTC](https://discourse.julialang.org/t/how-to-listen-to-a-zmq-subscriber-in-the-separate-thread-or-in-parallel/2884 "2017-03-26T07:28:59Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![kimran](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kimran/32/7782_2.png) [@kimran](https://discourse.julialang.org/u/kimran)\
**Post date:** [March 26, 2017, 7:28am UTC](https://discourse.julialang.org/t/how-to-listen-to-a-zmq-subscriber-in-the-separate-thread-or-in-parallel/2884/1 "2017-03-26T07:28:59Z")

</div>

I have a ZMQ subscriber socket

I want to constantly listen to this socket and react (call a callback method) whenever a message is received

Perhaps like this:

```julia
while true
 msg = ZMQ.recv(socket)
 callback(msg)
end

```

**How can I do this without blocking my main thread?**

Do I use Threads somehow or Tasks or what?

Thanks!

---

<div class="post-metadata">

**Author:** ![dfdx](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dfdx/32/120_2.png) [@dfdx](https://discourse.julialang.org/u/dfdx)\
**Post date:** [March 26, 2017, 10:27am UTC](https://discourse.julialang.org/t/how-to-listen-to-a-zmq-subscriber-in-the-separate-thread-or-in-parallel/2884/2 "2017-03-26T10:27:32Z")

</div>

The simplest way is to use Tasks, e.g. via `@async` macro:

```julia
@async while true
 msg = ZMQ.recv(socket)
 callback(msg)
end

```
