Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Current »

During the Iguana Server migration, you might need to manually resubmit queued message from the old Iguana into the new Iguana. There are two ways to achieve it.

https://www.youtube.com/embed/MCZj1K4du3U

Iguana Log Export

  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

  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

-- Compare two msgIds and see if id1 > id2
local function compareMsgIds(id1, id2)
   local isBigger = false
   local id1List = id1:split("-")
   local id2List = id2:split("-")
   if id1List[1] > id2List[1] then 
      isBigger = true
   elseif id1List[1] == id2List[1] then
      if tonumber(id1List[2]) > tonumber(id2List[2]) then
         isBigger = true
      end
   end
   return isBigger
end

-- 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 = 2
   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
   
   -- 5) Filter out processed Message
   local queuedMsgs = {}
   for i=1, #filteredLogMsgs do
      if compareMsgIds(msgId, filteredLogMsgs[i].message_id:nodeValue()) then
         break
      else
         table.insert(queuedMsgs,filteredLogMsgs[i].data)
      end
   end
   
   -- 6) Validate queued messages
   trace(queuedMsgs)
   if #queuedMsgs ~= QUEUED_COUNT then
      error("Not all queued messages have been queried, increase LOG_COUNT")
   end
end

  • No labels