Giter Site home page Giter Site logo

masstransit-js's Introduction

MassTransit

MassTransit is a free, open-source distributed application framework for .NET. MassTransit makes it easy to create applications and services that leverage message-based, loosely-coupled asynchronous communication for higher availability, reliability, and scalability.

Mass Transit

MassTransit is Apache 2.0 licensed.

MassTransit for JavaScript

This repository is the NPM package source for the JavaScript version of MassTransit. This is not a full implementation of MassTransit, and is primarily designed for interop with MassTransit for .NET from Node applications.

Official MassTransit web site

This project is currently under development, feedback and contributions encouraged!

masstransit-js's People

Contributors

bcaspari avatar maxjoehnk avatar phatboyg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

masstransit-js's Issues

Stable?

How usable, and stable, is this project? Using together with the current (.NET) MassTransit version, and using RabbitMQ?
According the readme, this project is still in development, but it hasn't been touched in 2 years.

Cannot find module 'events' in Next.js App while implementing masstransit.

I am using the Next.js application and have just started implementing the MassTransit in the application.
But I'm getting this error.

Error: Cannot find module 'events' at webpackEmptyContext (D:\demo\MTNodejs\next-message-broker\.next\server\app\broker\page.js:22:10) at eval (webpack-internal:///(rsc)/./node_modules/masstransit-rabbitmq/dist/bus.js:184:36) at eval (webpack-internal:///(rsc)/./node_modules/masstransit-rabbitmq/dist/bus.js:161:17) at eval (webpack-internal:///(rsc)/./node_modules/masstransit-rabbitmq/dist/bus.js:179:3) at (rsc)/./node_modules/masstransit-rabbitmq/dist/bus.js (D:\demo\MTNodejs\next-message-broker\.next\server\vendor-chunks\masstransit-rabbitmq.js:30:1) at __webpack_require__ (D:\demo\MTNodejs\next-message-broker\.next\server\webpack-runtime.js:33:42) at eval (webpack-internal:///(rsc)/./app/broker/page.tsx:11:78) at (rsc)/./app/broker/page.tsx (D:\demo\MTNodejs\next-message-broker\.next\server\app\broker\page.js:301:1) at Function.__webpack_require__ (D:\demo\MTNodejs\next-message-broker\.next\server\webpack-runtime.js:33:42) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:538:9) at process.processTimers (node:internal/timers:512:7) at async eh (D:\demo\MTNodejs\next-message-broker\node_modules\next\dist\compiled\next-server\app-page.runtime.dev.js:22:152341) at async eU (D:\demo\MTNodejs\next-message-broker\node_modules\next\dist\compiled\next-server\app-page.runtime.dev.js:22:156455) at async eB (D:\demo\MTNodejs\next-message-broker\node_modules\next\dist\compiled\next-server\app-page.runtime.dev.js:22:156930) at async eB (D:\demo\MTNodejs\next-message-broker\node_modules\next\dist\compiled\next-server\app-page.runtime.dev.js:22:157061) at async eB (D:\demo\MTNodejs\next-message-broker\node_modules\next\dist\compiled\next-server\app-page.runtime.dev.js:22:157061) at async eH (D:\demo\MTNodejs\next-message-broker\node_modules\next\dist\compiled\next-server\app-page.runtime.dev.js:22:160470) at async D:\demo\MTNodejs\next-message-broker\node_modules\next\dist\compiled\next-server\app-page.runtime.dev.js:22:160942 { digest: '3225388874', page: '/broker'

here is my package.json file:

{ "name": "next-message-broker", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "masstransit-rabbitmq": "^0.1.3", "react": "latest", "react-dom": "latest", "next": "latest" }, "devDependencies": { "typescript": "latest", "@types/react": "latest", "@types/node": "latest", "@types/react-dom": "latest" } }

Here is the code sample where the actual error is occurring:

`import React from 'react';
import {MessageType} from 'masstransit-rabbitmq/dist/messageType';
import masstransit from 'masstransit-rabbitmq';

const broker = () => {

MessageType.setDefaultNamespace('Contracts');

const bus = masstransit(); // cause error

return (

broker
)} export default broker`

requestClient.getResponse hugs when error occurred in the consumer from the other service

@Injectable()
export class OrderDetailsService {
  private readonly _client: RequestClient<
    GetOrderDetailsRequest,
    GetOrderDetailsResponse
  >;

  constructor(masstransit: MassTransitService) {
    this._client = masstransit.bus.requestClient<
      GetOrderDetailsRequest,
      GetOrderDetailsResponse
    >({
      exchange: 'order-details',
      requestType: new MessageType(
        'GetOrderDetailsRequest',
        'Contracts.Events.OrderProcessing.Requests',
      ),
      responseType: new MessageType(
        'GetOrderDetailsResponse',
        'Contracts.Events.OrderProcessing.Requests',
      ),
    });
  }

  public getResponse(req: GetOrderDetailsRequest) {
    return this._client.getResponse(req);
  }
}

if the consumer's response is moved to the error queue, the request will never be denied

requestClient.getResponse hugs when queue does not exists

@Injectable()
export class OrderDetailsService {
  private readonly _client: RequestClient<
    GetOrderDetailsRequest,
    GetOrderDetailsResponse
  >;

  constructor(masstransit: MassTransitService) {
    this._client = masstransit.bus.requestClient<
      GetOrderDetailsRequest,
      GetOrderDetailsResponse
    >({
      exchange: 'order-details',
      requestType: new MessageType(
        'GetOrderDetailsRequest',
        'Contracts.Events.OrderProcessing.Requests',
      ),
      responseType: new MessageType(
        'GetOrderDetailsResponse',
        'Contracts.Events.OrderProcessing.Requests',
      ),
    });
  }

  public getResponse(req: GetOrderDetailsRequest) {
    return this._client.getResponse(req);
  }
}

an error occurred if the order-details queue does not exists but request will never rejected

No Binding between Primary and Intermediate Exchange

Steps:

  1. Build masstransit-rabbitmq
  2. Build and run demo

Expected:

  1. Create binding between intermediate and primary exchange

Result:

  1. No binding created

I was expecting similar result as with using the DotNet packages.

How to add custom headers with requestClient?

How can I send custom/extra headers with requestClient?

To clarify I mean the headers in sendContext.ts

let client = bus.requestClient<SubmitOrder, OrderSubmitted>({
    exchange: "orders",
    requestType: new MessageType("SubmitOrder"),
    responseType: new MessageType("OrderSubmitted"),
})

const submitOrder = setInterval(async () => {
    try {
        let response = await client.getResponse({OrderId: Guid.create().toString(), Amount: 123.45})

        console.log("Order submitted", response.message.OrderId)
    }
    catch (e) {
        console.error("failed to submit order", e.message)
    }
}, 1000)

Example code above is from MassTransit/Sample-Node

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.