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