Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Navigate to Iguana Logs

  2. Configure the following Search Criteria:

    1. Channel

    2. Type=Message

    3. Hide Deleted

    4. Time Range (If know the queued message time range)

  3. Choose on Export

  4. Choose A CSV file

  5. Click on Export button to generate CSV

  6. Open CSV in Excel and Delete None “Message“ type logs (such as “Ignored Data Msg“)

  7. Back Iguana Logs with the same Step 2 Search Criteria

  8. Click on “Last Processed Message” link

  9. Scroll up/down to find the “Last Processed Message“ message that has “PROCESSED“ tag and click on it

  10. Click on “Show me a direct link to this entry“ to capture the message refid

    Image RemovedImage Added

    Image RemovedImage Added

  11. Use refid to find the last processed message in CSV file

  12. Find refid in CSV MessageId column and delete all the earlier processed messages include the “Last Processed Message“

  13. The remaining messages in CSV are queued messages

Iguana Translator

  1. Copy the Lua code below into your translator

  2. Update the CHANNEL_NAME, QUEUED_COUNT, and LOG_COUNT

  3. Update Iguana Log API endpoint if you query logs from another Iguana

  4. Run the Lua code

  5. Retrieve Queued Messages from line 56

Lua Code

Code Block
languagelua
-- The main function is the first function called from Iguana.
function main()
   -- 1) Define Queued Channel Name and Message Count 
   local CHANNEL_NAME = '01-File to Socket'
   local QUEUED_COUNT = 3
   local LOG_COUNT = 20 --Adjust QUERY COUNT if not all queued messages have been queried
   
   -- 2) Query Queued and Ignored Data Msg Messages
   local LogResults = net.http.post{
      url = 'http://localhost:6543/api_query',
      auth = {username = 'admin',password = 'password'},
      parameters = {
         source= CHANNEL_NAME,
         limit = LOG_COUNT,
         type="messages",
         deleted = 'false',
         reverse = true
      }, live=true
   }
   local logXML = xml.parse{data=LogResults}.export
   
   -- 3) Filter and validate only Queued Messages
   local filteredLogMsgs = {}
   for i= 1, logXML:childCount("message") do
      if logXML:child("message", i).type:nodeValue() == "Message" then
         table.insert(filteredLogMsgs, logXML:child("message", i))
      end
   end
   
   -- 4) Get last Processed Message
   LogResults = net.http.post{
      url = 'http://localhost:6543/log_browse_get_dequeue_position',
      auth = {username = 'admin',password = 'password'},
      body = "Source="..CHANNEL_NAME,
      live=true
   }
   logXML = json.parse{data=LogResults}
   local processedMsg = logXML[CHANNEL_NAME]
   local msgId = processedMsg.Date:gsub("/", "").."-"..processedMsg.Position
   trace(msgId)
   
   -- 5) Filter out processed Message
   local queuedMsgs = {}
   for i=1, #filteredLogMsgs do
      if filteredLogMsgs[i].message_id:nodeValue() == msgId then
         break
      else
         table.insert(queuedMsgs,filteredLogMsgs[i].data)
      end
   end
   
   -- 6) Validate queued messages
   if #queuedMsgs ~= QUEUED_COUNT then
      error("Not all queued messages have been queried, increase LOG_COUNT")
   end
   trace(queuedMsgs)
end