Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 21 02:50

    christopherread on master

    Removed log4net and updated Obv… (compare)

  • Oct 20 20:30
    christopherread milestoned #40
  • Oct 20 20:30
    christopherread assigned #41
  • Oct 20 20:30
    christopherread labeled #41
  • Oct 20 20:30
    christopherread milestoned #41
  • Oct 20 20:30
    christopherread opened #41
  • Oct 20 20:28
    christopherread opened #40
  • Oct 20 20:28
    christopherread review_requested #40
  • Oct 20 20:28
    christopherread assigned #40
  • Oct 20 20:26

    christopherread on subject-service-bus

    Removed Subscribe() from IServi… (compare)

  • Oct 20 20:09

    christopherread on subject-service-bus

    ServiceBus now uses an IService… (compare)

  • Oct 20 19:18

    christopherread on subject-service-bus

    Introduce new AllMessages optio… (compare)

  • Oct 18 23:18

    christopherread on master

    Update Obvs.RabbitMQ.sln (compare)

  • Oct 18 18:26

    christopherread on master

    Minor dependency updates, misse… (compare)

  • Oct 18 18:21

    christopherread on master

    Minor dependency updates (compare)

  • Oct 18 03:19
    christopherread closed #39
  • Oct 18 03:12

    christopherread on master

    Update appveyor.yml (compare)

  • Oct 18 03:03

    christopherread on master

    Updated to Obvs 5.0 (compare)

  • Sep 27 11:02

    megakid on master

    Added publicly visible interfac… Merge pull request #20 from pet… (compare)

  • Sep 27 11:02
    megakid closed #20
Magnus Lindhe
@mgnslndh
Also, I tried out the exception handling but I do not get any exceptions from the Exceptions observable:
            a.Exceptions.Subscribe(ex =>
            {
                Console.WriteLine(ex);
            });
If I throw exception in a Subscribe() to .Commands I can only handle it by try/catch the await a.SendAsync(...)
Is this the expected behaviour? When do I get exceptions on the Exceptions observable?
Christopher Read
@christopherread
@mgnslndh hi, yes it's perfectly fine to use it as an in-process but like that, even if it's not the original intention, but whatever works for you to start with
Christopher Read
@christopherread
@mgnslndh the Exceptions observable is there to surface errors being caught on the underlying Observables that are being merged internally, for example a deserialization or network error when reading a message off the transport. Any error thrown when sending a command with SendAsync would use a try/catch as normal. If an exception is thrown inside your subscribe function, that will end the subscription, so it would be your responsibility to catch that yourself if you don't want that behavior. Does that make sense?
Magnus Lindhe
@mgnslndh
Yes, it makes sense now :) thanks!
Would it make sense to extend the library with a default implementation for a local endpoint? I'm thinking it would make it easier to adopt the library when starting out using only in-process communication.
Christopher Read
@christopherread
@mgnslndh no I don't think it would make sense, as Obvs is designed to enable message based communication between at least a service and a client, or two services. The local bus is just an optimisation if you choose to host two or more of those services in the same process. Do you have any services yet?
Magnus Lindhe
@mgnslndh
Ok and thanks for your patience with me. I'm just trying to figure out how I can take advantage of your library. My scenario is a single application without external services, at least for now. I'm already using RX but I also like to model explicit commands and events. It could be possible to model application feature areas as services. Obvs seems to blend RX and messaging in a nice way.
Christopher Read
@christopherread
@mgnslndh no worries, happy to help, and thanks for the feedback :). So it's just a single process, operating on some data store? Using Obvs may help later once you start abstracting areas of functionality as services, but if you're certain it will just be a single process then you may prefer to just wrap a subject in an interface similar to IServiceBus, rather than take a dependency on Obvs just for that
Simon McConnell
@Unthred
@inter8ection Hi, I noticed there is a updated RabbitMQ client but it does not work with obvs. I get a stack overflow when subscribing to commands _serviceBus.Commands.OfType<SendMessageCommand>().Subscribe(SendMessage); I just downgraded and its all fine. Wondering if you knew about this already?
Christopher Read
@christopherread
@Unthred thanks for heads up, try new version I just released v3.3.4
Simon McConnell
@Unthred
thanks @inter8ection will try it now
Simon McConnell
@Unthred
@inter8ection Sorry for the delay in trying it out.... works fine thanks!
abrassara
@abrassara
@inter8ection Hi Christopher
I've been playing around with Obvs, it's a very cool piece of software!
I have some doubts on how to handle the following escenario with this library.
There's an endpoint defined on a server service bus that uses a filewatcher to check for new files in a directory. We need to check first for existing files in that directory to process them and then start receiving events on future files. Is there a way to do it inside the endpoint class? The thing is that if that check is done on the endpoint constructor and the events are build there for the previously existing files, there are no subscribers yet (they are defined after creating the service bus), so the events are lost.
Sure I can do it on the main class on the server service bus, but I wonder if there's a cleaner way to do it .
Thanks!
Christopher Read
@christopherread
Hi @abrassara, thanks. I can recommend checking out Observable.Create here: http://www.introtorx.com/content/v1.0.10621.0/04_CreatingObservableSequences.html, maybe you will find it useful. It's not clear from your description whether you want to send all file events since you started your process to each new subscriber, or not.
@abrassara ages ago I played round with using the FileSystemWatcher as a message transport, for people who couldn't install a broker in their environment. It was just for fun, and I really don't recommend it! But this code might be useful for your purposes:
https://github.com/inter8ection/Obvs.FileSystem/blob/master/Obvs.FileSystem/Utils/ObservableFileSystemWatcher.cs
Christopher Read
@christopherread
@/all good article on ingestors vs brokers
Simon McConnell
@Unthred
@inter8ection Hi when I am using rabbitMQ manually to send single messages I can add a clientProvidedName to the connection - makes it easier to track what is coming from where when examining stuff in rabbitmq's gui. Can I do the same with Obvs? I am trying to track down my connection count creeping up
abrassara
@abrassara
@inter8ection Thanks for your response, I'll check that out.
Christopher Read
@christopherread

@/all thanks to @megakid we have Obvs v4.0 on nuget, updated to System.Reactive 3.1.1
https://www.nuget.org/packages/Obvs

The other packages that have been updated so far are Obvs.ActiveMQ and Obvs.Serialization. The others will be updated soon.

Christopher Read
@christopherread
@/all there is a new version 4.0 of Obvs.RabbitMQ using Obvs 4.0 and Rx 3.0. No other breaking changes, should appear here shortly:
https://www.nuget.org/packages/Obvs.RabbitMQ
Christopher Read
@christopherread
@/all all packages now up to date and on v4.0
Christopher Read
@christopherread
@/all My #GitHub profile is no longer 'inter8ection', it has changed to 'christopherread'. Please update any remote #git repository URL's you may have for #Obvs
https://github.com/christopherread
Christopher Read
@christopherread
eg.
git remote set-url origin https://github.com/christopherread/Obvs
abrassara
@abrassara
@christopherread Hi, I've been using Obvs in a production environment with RabbitMQ transport, it's been working fine so far, the only problem I found is that all Obvs bus instances must be restarted since they do not recover automatically when Rabbit goes down for a while. Is this the expected behaviour? I mean, the library is not responsable to restore connections in case of a failure and this issue must be addressed at an upper tier ? Thanks, Andres.
Christopher Read
@christopherread
@abrassara I'll take a look. I'm not using it in production myself, so if you could advise on the calls you want made within Obvs I can make them, or you can submit a PR with a fix
Christopher Read
@christopherread
@abrassara I have taken a look, and according to this Obvs is doing what is expected
https://www.rabbitmq.com/dotnet-api-guide.html#connection-recovery
George Chatzimanolis
@geochatz
Hello! Thanks for the great library. I am testing Obvs with ActiveMQ. I have a question. Is it possible to provide Username and Password to your connection?
Christopher Read
@christopherread
@geochatz Hi George, welcome! The username/password config is not currently exposed for ActiveMQ but it could be added
Christopher Read
@christopherread
@geochatz check out v4.0.1 of Obvs.ActiveMQ on nuget.org, and use new fluent config extension WithCredentials(userName, password) to pass in credentials for the broker connection
Please feedback with any problems
George Chatzimanolis
@geochatz
@christopherread Wow! That was quick. Thanks. I will check it ASAP!!
James Connor
@megakid
@/all I have also released v4.1 which now has support for .NET Standard - 1.6 if I remember correctly. We will need to update the integrations and serialization libraries in time.
Christopher Read
@christopherread
Nice work @megakid, also I just merged the Obvs ActiveMQ PR with NET Standard 2 commits
James Connor
@megakid
@christopherread have you made a new nuget release Obvs.ActiveMQ 4.1 ?
I'm not desperate, just chipping away
Christopher Read
@christopherread
Nope not yet, but I will tonight
James Connor
@megakid
@christopherread I have lost access to the appveyor account to release nuget packages
maybe during your rename from inter8..
my appveyor acct seems to be JamesConnor
James Connor
@megakid
scrap that
found an account i didnt know I had
James Connor
@megakid
@christopherread have pushed v5
Christopher Read
@christopherread
@megakid yeah I log in using my github account usually
Nice!
Márcio Moreira
@arqeco
Hello, I need to develop an app that discover peers on local network and the communicates with them via messaging. Is Obvs for this kind of things?
Tom May
@tjdecke
Hi folks! Still loving Obvs. I have a large algo trading suite running on it, and am starting to convert most of the backend to Akka.NET, but i dont want to loose the convenience of Obvs in merging event streams etc.. i was wondering if anyone has explored/done some integration between Obvs and Akka.net, for example through Akka streams
James Connor
@megakid
@tjdecke funny you should say that as I’m also running an algo trading type solution on top of Obvs (using ActiveMQ integration and protobuf- May I ask what you’re using?) and we too are experimenting with Akka.NET - we’re not looking to use Akka remoting or clustering yet just for internal queuing/threading etc - were currently not far into that prototype (but have some discovery stories planned) - would be keen to team on any efforts in bridging with Obvs as we’re looking for a decent pattern for that