I've the following (amqp-client-5.9.0.jar) amqp jar file in the C:\Program Files\Inductive Automation\Ignition\user-lib
I've also added the same in C:\Program Files\Inductive Automation\Ignition\user-lib\third-party
Now I've written the following script in the Scripting -> Gateway Events -> Startup
# Gateway Startup Script - Minimal Dependencies Version
import sys
from com.rabbitmq.client import ConnectionFactory, Channel
import threading
import time
# Global variables
rabbitmq_connection = None
rabbitmq_channel = None
def initialize_rabbitmq():
"""Initialize RabbitMQ connection"""
global rabbitmq_connection, rabbitmq_channel
try:
factory = ConnectionFactory()
factory.setHost("localhost")
factory.setPort(5672)
factory.setUsername("admin") # Change if you created custom user
factory.setPassword("password123") # Change if you created custom user
factory.setVirtualHost("/")
# Disable automatic recovery to avoid logging dependencies
factory.setAutomaticRecoveryEnabled(False)
rabbitmq_connection = factory.newConnection()
rabbitmq_channel = rabbitmq_connection.createChannel()
# Declare exchange and queue
rabbitmq_channel.exchangeDeclare("ignition_exchange", "direct", True)
rabbitmq_channel.queueDeclare("ignition_data_queue", True, False, False, None)
rabbitmq_channel.queueBind("ignition_data_queue", "ignition_exchange", "data")
print("RabbitMQ connection established successfully")
return True
except Exception as e:
print("Failed to initialize RabbitMQ: " + str(e))
return False
# Initialize on startup
initialize_rabbitmq()
However, upon loading the gateway I get the following error in logs
com.inductiveautomation.ignition.common.script.JythonExecException: Traceback (most recent call last): File "<[TestProject] Startup Script>", line 3, in ImportError: No module named rabbitmq
at org.python.core.Py.ImportError(Py.java:327)
at org.python.core.imp.import_logic(imp.java:1292)
at org.python.core.imp.import_module_level(imp.java:1371)
at org.python.core.imp.importName(imp.java:1544)
at org.python.core.ImportFunction.call(builtin.java:1285)
at org.python.core.PyObject.call(PyObject.java:433)
at org.python.core.builtin.import(builtin.java:1232)
at org.python.core.imp.importFromAs(imp.java:1636)
at org.python.core.imp.importFrom(imp.java:1611)
at org.python.pycode._pyx1.f$0(<[TestProject] Startup Script>:85)
at org.python.pycode._pyx1.call_function(<[TestProject] Startup Script>)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyCode.call(PyCode.java:18)
at org.python.core.Py.runCode(Py.java:1703)
at com.inductiveautomation.ignition.common.script.ScriptManager.runCode(ScriptManager.java:804)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$TrackingProjectScriptManager.runCode(ProjectScriptLifecycle.java:859)
at com.inductiveautomation.ignition.common.script.ScriptManager.runCode(ScriptManager.java:773)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$TrackingProjectScriptManager.runCode(ProjectScriptLifecycle.java:850)
at com.inductiveautomation.ignition.common.script.ScriptManager.runCode(ScriptManager.java:740)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$TrackingProjectScriptManager.runCode(ProjectScriptLifecycle.java:831)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.runStartupScript(ProjectScriptLifecycle.java:374)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.runStartupScript(ProjectScriptLifecycle.java:341)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.startupScriptConfig(ProjectScriptLifecycle.java:239)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.restartScriptConfig(ProjectScriptLifecycle.java:231)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.onResourcesModified(ProjectScriptLifecycle.java:733)
at com.inductiveautomation.ignition.gateway.project.ProjectLifecycle$LifecycleResourceListener.resourcesModified(ProjectLifecycle.java:176)
at com.inductiveautomation.ignition.common.project.AbstractProject.notifyResourceListeners(AbstractProject.java:351)
at com.inductiveautomation.ignition.common.project.AbstractProject.updateEffectiveState(AbstractProject.java:153)
at com.inductiveautomation.ignition.common.project.RuntimeProject.applyChange(RuntimeProject.java:274)
at com.inductiveautomation.ignition.gateway.project.ProjectLifecycleFactory$1.lambda$updateOrStartAffectedProjects$5(ProjectLifecycleFactory.java:185)
at java.base/java.util.ArrayList.forEach(Unknown Source)
at com.inductiveautomation.ignition.gateway.project.ProjectLifecycleFactory$1.updateOrStartAffectedProjects(ProjectLifecycleFactory.java:165)
at com.inductiveautomation.ignition.gateway.project.ProjectLifecycleFactory$1.projectUpdated(ProjectLifecycleFactory.java:143)
at com.inductiveautomation.ignition.gateway.project.BaseProjectManager.doProjectUpdatedNotification(BaseProjectManager.java:1055)
at com.inductiveautomation.ignition.gateway.project.BaseProjectManager.lambda$fireProjectUpdated$25(BaseProjectManager.java:1005)
at com.inductiveautomation.ignition.gateway.project.BaseProjectManager.lambda$submitToQueue$22(BaseProjectManager.java:983)
at com.inductiveautomation.ignition.common.util.ExecutionQueue$PollAndExecute.run(ExecutionQueue.java:239)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.python.core.PyException: ImportError: No module named rabbitmq
... 40 common frames omitted
I can't seem to get this working. Could someone please help.