RMQ message size limit

egor
egor Moscow
Hi, I get an error (41708: RMQ Error - Invalid message) while trying to recieve message (ASCII symbols) from PC app. I found out, that strings more than 80 symbols raise this error.
But message size limit is 444. So, I don't get it :neutral:

I know, there is a limitation for socket recieving for strings (max. number of characters 80 can be handled). Maybe there's the same limitation for RMQ?

Here is my code:

        public void SendMessage(string strMsg)
        {
            //> 80 symbols (not working)
            //strMsg = "LF'L'R'D'RBDU'B'U'BU2BUB'ULU'L'U'B'U'BFUF'U'FUF'U'FUF'U'RU2R'F'U2FL'BLUL'U'B'ULU'R'U2RU2R'FRUR'U'R'F'R2U";

            //80 symbols (working fine)
            strMsg = "LF'L'R'D'RBDU'B'U'BU2BUB'ULU'L'U'B'U'BFUF'U'FUF'U'FUF'U'RU2R'F'U2FL'BLUL'U'B'ULU";

            //Message size limit - 444
            MessageBox.Show(tRob1Queue.MessageSizeLimit.ToString());

            //Clear byte
            Byte[] data = null;

            //Create message data
            data = new UTF8Encoding().GetBytes("string;\"" + strMsg + "\"");

            //Place data and sender information in message
            sendMessage.SetData(data);
            sendMessage.Sender = myQueue.QueueId;

            //Send message to the RAPID queue
            tRob1Queue.Send(sendMessage);
        }

Comments

  • egor
    egor Moscow
    dnilsson said:
    Test sending a message from the robot to the PC with 80 characters and check the message size of that message when you receive it.
    Not sure I understand you correctly, but message size in RAPID is 80 characters. 
  • dnilsson
    dnilsson Gothenburg admin
    edited May 2020
    The limitation here would be the string itself. Try to create a program with a string longer than 80chars and it will tell you it's too long.
  • egor
    egor Moscow
    Is there a way to send a message in bytes (similar to raw data)? Or should I split the message into 2 parts?
  • Kienan123
    Kienan123 Oregon
    This may be of help

    you can change the message size limit in the sys file.

    SYS.cfg

    CAB_TASKS:

          -Name "T_ROB1" -RmqMaxMsgSize 1000

    Then I normally use a record to pack a bunch of data together in whatever format your trying to use.

    The limit for any one string variable will always be 80 but you can have multiple 80 string variables in a Record that is sent over the RMQ.

        RECORD RMQ_Data 
            string sTask;
            pos position;
            dnum dnUnixStamp;

        ENDRECORD

    While I have not used it myself you should be able to send rawbytes aswell.