Enhanced MessagingService Limits

It’s still called out in the documentation that Delivery is best effort and not guaranteed, but we did try to improve the reliability as well. Have you experienced the issue recently (last 30 days)?

1 Like

As a reminder, you can now use Luau binary buffer type (Introducing Luau buffer type [Beta]) in MessagingService data.

It still has encoding overhead (35 + math.ceil(bytes / 3) * 4), but buffers up to 741 bytes should be possible.
Encoded length can be checked with HttpService:JSONEncode.
Buffers are compressed before encoding, so you might be able to fit more, but be careful as different data will have different compression ratio.

1 Like

The one singular aspect of this that makes many things limiting, the size of the messages (1 KB), is the one thing that didn’t change. Definitely a disappointing aspect.

Also still waiting on announcements about bug fixes that severely hinder everything I do, but alas, they never come, and the relevant bug report page remains cold and silent.

That is great, This is what i have been asking for

Is there any data for how reliable Messaging Service is? As I’m not entirely sold on using the system due to it possibly being unreliable.

2 Likes

Is there any way you guys can make sure servers have received the message before returning a 200 status code, and then return a ~500 if not? I already suggested this a while back and was told it was being considered.

It does? This is news to me. Was this a recent change?

Support in Studio has been there for a few years… note that the messages sent from Studio are isolated in a test channel so they won’t impact your game in production.

Regarding reliability, our internal metrics do show significant improvements. Be aware the messaging service does not work like traditional HTTP request/response, it’s very expensive to send a message and wait until it’s been successfully delivered to all subscribers. Imagine your experience has 10,000 servers that all subscribe to the same topic… That being said, we are still exploring opportunities to avoid such delivery failures.

3 Likes

Is it possible to share these metrics? How reliable is messaging service? What is the difference in reliability between 1k servers and 10k servers?

2 Likes

if only this had been done 3 years ago when i actually had a use for it…

When running in Studio, it errors. I’ve had to create custom code that detects the Studio context and skips hooking to Messaging service.

What errors did you get when running in Studio? make sure you enabled Studio Access to API Services (reference https://youtu.be/VHDLIY3XOno?t=580)

1 Like

It would be nice if the messages could be sent more frequently but with less data so if something needed to be synchronised across servers at almost Realtime speeds it could as long as it doesn’t require tons of data to do so thinking like a data sent/received per server/game limit instead of messages sent/received per server/game limit.

Oh cool, this should be very useful and add more usecases for this service

The thing is, it used to, even with access to API. It seemingly isn’t anymore, which is good. Now, how can I test it in Studio effectively?

Nice update. Will come in handy,

I’m having an issue where my game’s universe structure and logic exceeds rate limits at ~160 CCU:

  • Universe
    • Lobby place (1 player max)
      • Subscribes to topic
    • Match place (16 player max)
      • Publishes to topic every 10 seconds

Note: game uses a custom matchmaking system.

The particular error code I kept getting was: The rate of message requests exceeds the allowed limit. MessagingService: Please retry after x seconds.

How does this possibly exceed any limit and am I doing something wrong?
Could it be related to the 1 player lobby servers I have?

I was planning on adding cross-server messaging and much more with MessagingService but after this I’m worried I might not be able to without hitting some sort of limit.

1 Like

You might have hit this limit Messages received per topic: (40 + 80 * number of servers) per minute.
Based on your description, I assume all your servers subscribe to the same topic, in that case every message will be delivered to all servers and can possibly trigger the limit. Your game seems to send 3 messages per second (from all servers), let’s assume you have 60 servers, the total received messages on the topic will be 3 * 60(servers) * 60(seconds) = 10,800 messages/minute, while the limit is 40 + 80 * 60 = 4,840.

1 Like

I don’t entirely understand where the 3 messages per second comes from?

If each match place publishes to the topic every 10 seconds (6 times per minute) and say there are 60 servers active in the match place (which publishes), and 20 servers active in the lobby place (which is subscribed); doesn’t this result in 6 (messages) x 60 (servers) = 360 published messages per minute, while the limit is like you said 4,840 messages/minute?

This is why I’m confused as to why I was hitting rates, and I’d love to use MessagingService to establish a connection between multiple 1-player servers for a matchmaking party system. However, like I mentioned; I’m worried I’ll be hitting some sort of limit without really knowing why. :sweat_smile: