Can Mono connect to Java ActiveMQ Publiser?

Hi,
I’m on a project where I need to create a Java Publisher through ActiveMQ and pass Data to a Unity 3D Subscriber written in C#. The data is a Java String Array representing the Latitude, Longitude and Position of a plane. What’s the best way to handle this, through IKVM plugin or using an ActiveMQ Subscriber (NMS) written in C#? I’m a Java developer brand new to both Unity 3D and Mono C#.

Thanks in advance!

~Ethelyn

Hi @amidechat,

Got it to work. I’m using Unity 5.5.0f3. I used mono 2.0 libs from ActiveMQ.

  • make a folder in your assets called Plugins
  • Put these dlls in the Plugins folder: Apache.NMS.dll, Apache.NMS.ActiveMQ.dll, and Ionic.Zlib.dll

For my .net code I based it on: ActiveMQ

Here is my code, hope it helps.
using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
using UnityEngine.UI;

//#if !UNITY_EDITOR
using Apache.NMS;
using Apache.NMS.Util;
using Apache.NMS.ActiveMQ;
using System.Threading;
//#endif

public class AMQTextController : MonoBehaviour {

public Text theText; // text object that AMQ message will be displayed
public Text reloadText; // text object that the count down will displayed
public static IConnectionFactory factory;
public static IConnection connection;
public static ISession session;
public static bool readyToConsumer = false;

protected static AutoResetEvent semaphore = new AutoResetEvent(false);
protected static ITextMessage message = null;
protected static TimeSpan receiveTimeout = TimeSpan.FromSeconds(10);

int reloadTimer;

// Use this for initialization
void Start () {

    theText.text = "here we go...";

    // connect
    factory = new ConnectionFactory("tcp://localhost:61616/");
    connection = factory.CreateConnection("admin", "admin");

    theText.text = "Connected...";

    ReloadData();

}

// Update is called once per frame
void Update () {
    reloadTimer++;
    reloadText.text = "" + (200 - reloadTimer); // count down and display

    if(reloadTimer > 200)
    {
        reloadTimer = 0;
        ReloadData();
    }
}

public void QuitGame()
{
    Application.Quit();
}

public void ReloadData()
{
    theText.text = "Refreshing...";

    try
    {
        using (ISession session = connection.CreateSession())
        {

            IDestination destination = SessionUtil.GetDestination(session, "queue://FOO.BAR");
            Console.WriteLine("Using destination: " + destination);
            theText.text = "Using destination: " + destination;

            // Create a consumer and producer
            using (IMessageConsumer consumer = session.CreateConsumer(destination))
            {
                connection.Start();

                consumer.Listener += new MessageListener(OnMessage);

                // Consume a message
                semaphore.WaitOne((int)receiveTimeout.TotalMilliseconds, true);

                if (message == null)
                {
                    Console.WriteLine("No message received!");
                }
                else
                {
                    theText.text = "Received message with text: " + message.Text;
                }
            }
        }
    }//try
    catch (Exception e)
    {
        theText.text = e.Message + " -" + e.GetBaseException().ToString() ;
    }
}

protected static void OnMessage(IMessage receivedMsg)
{
    message = receivedMsg as ITextMessage;
    semaphore.Set();
}

}

Hey I followed you’re steps in Unity 2018.1.1f1 and it works in editor mode but when I build it gives a strange error (it has something to do with the DLL files. Can you help me, @jeffblumenthal, @amidechat


UnityException: Failed to run serialization weaver with command "-pdb" "-verbose" "-unity-engine=Temp\StagingArea\Data\Managed\UnityEngine.CoreModule.dll" "Temp\StagingArea\TempSerializationWeaver" "-lock=UWP\project.lock.json" "@C:\AppData\Local\Temp	mp50dfd1fb.tmp" "-additionalAssemblyPath=Temp\StagingArea\Data\Managed".

Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.CoreModule.pdb
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.SpriteMaskModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.SpriteMaskModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.SpriteShapeModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.SpriteShapeModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.StyleSheetsModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.StyleSheetsModule.dll
 + UnityEngine.StyleSheets.StyleComplexSelector
 + UnityEngine.StyleSheets.StyleProperty
 + UnityEngine.StyleSheets.StyleRule
 + UnityEngine.StyleSheets.StyleSelector
 + UnityEngine.StyleSheets.StyleSelectorPart
 + UnityEngine.StyleSheets.StyleSheet
 + UnityEngine.StyleSheets.StyleValueHandle
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.TerrainModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.TerrainModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.TerrainPhysicsModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.TerrainPhysicsModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.TextRenderingModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.TextRenderingModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.TilemapModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.TilemapModule.dll
 + UnityEngine.GridBrushBase
 + UnityEngine.Tilemaps.Tile
 + UnityEngine.Tilemaps.TileBase
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.UIElementsModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.UIElementsModule.dll
 + UnityEngine.Internal.Experimental.UIElements.PanelWrapper
 + UnityEngine.Experimental.UIElements.Slider/SliderValue
 + UnityEngine.Experimental.UIElements.TemplateAsset
 + UnityEngine.Experimental.UIElements.VisualElementAsset
 + UnityEngine.Experimental.UIElements.VisualTreeAsset/UsingEntry
 + UnityEngine.Experimental.UIElements.VisualTreeAsset/SlotDefinition
 + UnityEngine.Experimental.UIElements.VisualTreeAsset/SlotUsageEntry
 + UnityEngine.Experimental.UIElements.VisualTreeAsset
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.UIModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.UIModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.UNETModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.UNETModule.dll
 + UnityEngine.Networking.ChannelQOS
 + UnityEngine.Networking.ConnectionConfig
 + UnityEngine.Networking.HostTopology
 + UnityEngine.Networking.GlobalConfig
 + UnityEngine.Networking.Match.NetworkMatch
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.UnityAnalyticsModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.UnityAnalyticsModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.UnityConnectModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.UnityConnectModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.UnityWebRequestAssetBundleModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.UnityWebRequestAssetBundleModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.UnityWebRequestAudioModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.UnityWebRequestAudioModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.UnityWebRequestModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.UnityWebRequestModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.UnityWebRequestTextureModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.UnityWebRequestTextureModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.UnityWebRequestWWWModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.UnityWebRequestWWWModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.VehiclesModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.VehiclesModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.VideoModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.VideoModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.VRModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.VRModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.WebModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.WebModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.WindModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.WindModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.XRModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.XRModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.SharedInternalsModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.SharedInternalsModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.ScreenCaptureModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.ScreenCaptureModule.dll
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\UnityEngine.Physics2DModule.pdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\UnityEngine.Physics2DModule.dll
 + UnityEngine.ContactFilter2D
Will export symbols of pdb format
Symbols will be read from Temp\StagingArea\Data\Managed\Assembly-CSharp.dll.mdb
Weaving assembly D:\schoolDemo_Spatial\Temp\StagingArea\Data\Managed\Assembly-CSharp.dll
 + ActiveMQHandler
 + AnchorObject
 + ButtonHandler
 + DebugWallHandler
 + DefaultInitializationErrorHandler
 + DefaultTrackableEventHandler
 + DisplayDependentObjectActivator
 + InteractibleParameters
 + Interactible
 + InteractibleManager
 + Placeable
 + PlaySpaceManager
 + PlanetOcclusion
 + PlanetOrbit
 + RotateAsteroids
 + SunScript
 + SpaceCollectionManager
 + TestCanvasHandler
 + menuHandler
 + OldVuMarkHandler
 + PanelShowHide
 + SpaceCollectionManage
 + VuMarkHandler
 + VuMarkTrackableEventHandler
 + VuMarkInstanceManager
 + Assets.Vuforia.Scripts.DatapuntUitDataModel
 + Assets.Vuforia.Scripts.OptionDataModel
 + Assets.Vuforia.Scripts.DisconnectedHandler
 + Assets.Vuforia.Scripts.ErrorDataModel
 + Assets.Vuforia.Scripts.GetDataModel
 + Assets.Vuforia.Scripts.HMIButtonHandler
 + Assets.Vuforia.Scripts.HttpRequestHandler
 + Assets.Vuforia.Scripts.PostDataModel
 + Assets.Vuforia.Scripts.SensorDataModel
 + GLTF.GLTFHeaderInvalidException
 + GLTF.ShaderNotFoundException
 + GLTF.GLTFComponent
 + GLTF.GLTFComponentStreamingAssets
 + Academy.HoloToolkit.Unity.GestureManager
 + Academy.HoloToolkit.Unity.HandsManager
 + HoloToolkit.UI.Keyboard.AxisSlider
 + HoloToolkit.UI.Keyboard.CapsLockHighlight
 + HoloToolkit.UI.Keyboard.Keyboard
 + HoloToolkit.UI.Keyboard.KeyboardInputField
 + HoloToolkit.UI.Keyboard.KeyboardKeyFunc
 + HoloToolkit.UI.Keyboard.KeyboardValueKey
 + HoloToolkit.UI.Keyboard.SliderInputField
 + HoloToolkit.UI.Keyboard.SymbolDisableHighlight
 + HoloToolkit.UI.Keyboard.SymbolKeyboard
 + HoloToolkit.UI.Keyboard.UICollection
 + HoloToolkit.Sharing.SharingStage
 + HoloToolkit.Sharing.DefaultSyncModelAccessor
 + HoloToolkit.Sharing.TransformSynchronizer
 + HoloToolkit.Sharing.SharingWorldAnchorManager
 + HoloToolkit.Sharing.Utilities.AutoJoinSessionAndRoom
 + HoloToolkit.Sharing.Utilities.DirectPairing
 + HoloToolkit.Sharing.Utilities.ManualIpConfiguration
 + HoloToolkit.Sharing.Spawning.PrefabToDataModel
 + HoloToolkit.Sharing.Spawning.PrefabSpawnManager
 + HoloToolkit.Unity.RayStep
 + HoloToolkit.Unity.AudioEmitter
 + HoloToolkit.Unity.AudioOccluder
 + HoloToolkit.Unity.UAudioClip
 + HoloToolkit.Unity.AudioContainer
 + HoloToolkit.Unity.AudioEvent
 + HoloToolkit.Unity.AudioEventBank
 + HoloToolkit.Unity.AudioSourcesReference
 + HoloToolkit.Unity.UAudioManager
 + HoloToolkit.Unity.SpatialUnderstanding
 + HoloToolkit.Unity.SpatialUnderstandingCustomMesh
 + HoloToolkit.Unity.SpatialUnderstandingSourceMesh
 + HoloToolkit.Unity.AdaptiveQuality
 + HoloToolkit.Unity.AdaptiveViewport
 + HoloToolkit.Unity.ApplicationViewManager
 + HoloToolkit.Unity.Billboard
 + HoloToolkit.Unity.DebugPanel
 + HoloToolkit.Unity.DebugPanelControllerInfo
 + HoloToolkit.Unity.DebugPanelFPSCounter
 + HoloToolkit.Unity.DirectionIndicator
 + HoloToolkit.Unity.FadeManager
 + HoloToolkit.Unity.FadeScript
 + HoloToolkit.Unity.FixedAngularSize
 + HoloToolkit.Unity.FpsDisplay
 + HoloToolkit.Unity.GpuTimingCamera
 + HoloToolkit.Unity.HeadsetAdjustment
 + HoloToolkit.Unity.HeadsUpDirectionIndicator
 + HoloToolkit.Unity.Int3
 + HoloToolkit.Unity.InterpolatedColor
 + HoloToolkit.Unity.InterpolatedFloat
 + HoloToolkit.Unity.InterpolatedQuaternion
 + HoloToolkit.Unity.InterpolatedVector2
 + HoloToolkit.Unity.InterpolatedVector3
 + HoloToolkit.Unity.QuaternionInterpolated
 + HoloToolkit.Unity.Interpolator
 + HoloToolkit.Unity.NearPlaneFade
 + HoloToolkit.Unity.SceneLauncher/SceneMapping
 + HoloToolkit.Unity.SceneLauncher
 + HoloToolkit.Unity.SceneLauncherButton
 + HoloToolkit.Unity.SimpleTagalong
 + HoloToolkit.Unity.SphereBasedTagalong
 + HoloToolkit.Unity.StabilizationPlaneModifier
 + HoloToolkit.Unity.StartAwareBehaviour
 + HoloToolkit.Unity.Tagalong
 + HoloToolkit.Unity.TextToSpeech
 + HoloToolkit.Unity.TimerScheduler
 + HoloToolkit.Unity.ToggleDebugWindow
 + HoloToolkit.Unity.WorldAnchorManager
 + HoloToolkit.Unity.CalibrationSpace
 + HoloToolkit.Unity.ProfileBase
 + HoloToolkit.Unity.UsabilityScaler
 + HoloToolkit.Unity.Receivers.InteractionReceiver
 + HoloToolkit.Unity.Receivers.ToggleActiveReceiver
 + HoloToolkit.Unity.UX.Distorter
 + HoloToolkit.Unity.UX.DistorterBulge
 + HoloToolkit.Unity.UX.DistorterGravity
 + HoloToolkit.Unity.UX.DistorterSimplex
 + HoloToolkit.Unity.UX.DistorterSphere
 + HoloToolkit.Unity.UX.DistorterWiggly
 + HoloToolkit.Unity.UX.Bezier/PointSet
 + HoloToolkit.Unity.UX.Bezier
 + HoloToolkit.Unity.UX.Ellipse
 + HoloToolkit.Unity.UX.Line
 + HoloToolkit.Unity.UX.LineBase
 + HoloToolkit.Unity.UX.LineMeshes
 + HoloToolkit.Unity.UX.LineObjectCollection
 + HoloToolkit.Unity.UX.LineObjectFollower
 + HoloToolkit.Unity.UX.LineObjectSwarm
 + HoloToolkit.Unity.UX.LineParticles
 + HoloToolkit.Unity.UX.LineRendererBase
 + HoloToolkit.Unity.UX.LineStripMesh
 + HoloToolkit.Unity.UX.LineUnity
 + HoloToolkit.Unity.UX.Parabola
 + HoloToolkit.Unity.UX.Rectangle
 + HoloToolkit.Unity.UX.Spline
 + HoloToolkit.Unity.UX.SplinePoint
 + HoloToolkit.Unity.Collections.CollectionNode
 + HoloToolkit.Unity.Collections.ObjectCollection
 + HoloToolkit.Unity.Collections.ObjectCollectionDynamic/CollectionNodeDynamic
 + HoloToolkit.Unity.Collections.ObjectCollectionDynamic
 + HoloToolkit.Unity.Buttons.AnimatorControllerAction
 + HoloToolkit.Unity.Buttons.AnimButton
 + HoloToolkit.Unity.Buttons.AnimControllerButton
 + HoloToolkit.Unity.Buttons.Button
 + HoloToolkit.Unity.Buttons.MeshButtonDatum
 + HoloToolkit.Unity.Buttons.SpriteButtonDatum
 + HoloToolkit.Unity.Buttons.ButtonIconProfile
 + HoloToolkit.Unity.Buttons.ButtonIconProfileTexture
 + HoloToolkit.Unity.Buttons.ButtonLocalizedText
 + HoloToolkit.Unity.Buttons.ButtonMeshProfile
 + HoloToolkit.Unity.Buttons.ButtonProfile
 + HoloToolkit.Unity.Buttons.ButtonSoundProfile
 + HoloToolkit.Unity.Buttons.ButtonSounds
 + HoloToolkit.Unity.Buttons.ButtonTextProfile
 + HoloToolkit.Unity.Buttons.CompoundButton
 + HoloToolkit.Unity.Buttons.CompoundButtonAnim
 + HoloToolkit.Unity.Buttons.CompoundButtonIcon
 + HoloToolkit.Unity.Buttons.CompoundButtonMesh/MeshButtonDatum
 + HoloToolkit.Unity.Buttons.CompoundButtonMesh
 + HoloToolkit.Unity.Buttons.CompoundButtonSounds
 + HoloToolkit.Unity.Buttons.CompoundButtonSpeech
 + HoloToolkit.Unity.Buttons.CompoundButtonText
 + HoloToolkit.Unity.Buttons.CompoundButtonToggle
 + HoloToolkit.Unity.Buttons.MeshButton
 + HoloToolkit.Unity.Buttons.ObjectButton/ObjectButtonDatum
 + HoloToolkit.Unity.Buttons.ObjectButton
 + HoloToolkit.Unity.Buttons.SpriteButton
 + HoloToolkit.Unity.SpatialMapping.ObjectSurfaceObserver
 + HoloToolkit.Unity.SpatialMapping.FileSurfaceObserver
 + HoloToolkit.Unity.SpatialMapping.RemoteMappingManager
 + HoloToolkit.Unity.SpatialMapping.RemoteMeshSource
 + HoloToolkit.Unity.SpatialMapping.RemoteMeshTarget
 + HoloToolkit.Unity.SpatialMapping.SpatialMappingManager
 + HoloToolkit.Unity.SpatialMapping.SpatialMappingObserver
 + HoloToolkit.Unity.SpatialMapping.SpatialMappingSource
 + HoloToolkit.Unity.SpatialMapping.RemoveSurfaceVertices
 + HoloToolkit.Unity.SpatialMapping.SurfaceMeshesToPlanes