Thanks for this question. Unfortunately it's not possible right now, but it's a great feature request.
In the meantime you will need to use some kind of polling via the API. You can look for new transactions by repeatedly calling getrawmempool, looking for changes in the output of getbestblockhash and getblockcount to identify new blocks and calling getblock with the second parameter of true to get a list of transactions in each block. Given a particular transaction ID, you can retrieve that transaction's contents using getrawtransaction – the OP_RETURN payload will be in the data field of the output.